Junit4: рдПрдиреНрд╣рд╛рдВрд╕рдореЗрдВрдЯ: AssertEquals рдХреЗ рд▓рд┐рдП BigDecimal рд╕рдорд░реНрдерди ()

рдХреЛ рдирд┐рд░реНрдорд┐рдд 25 рдорд╛рд░реНрдЪ 2010  ┬╖  27рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: junit-team/junit4

BigDecimal рдорд╛рдиреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреБрдиреАрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣рдореЗрд╢рд╛ рдПрдХ рдкреАрдбрд╝рд╛рджрд╛рдпрдХ рдмрд┐рдВрджреБ рд╣реЛрддрд╛ рд╣реИред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ BigDecimal рдмрд░рд╛рдмрд░ () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдЯреАрдХрддрд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рддреБрд▓рдирд╛ () рдореЗрдВ рдЕрдирджреЗрдЦрд╛ рдХрд░рддрд╛ рд╣реИред рдЗрд╕реЗ рд╕рдВрднрд╛рд▓рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдПрдХ рдирдИ assertEquals рд╡рд┐рдзрд┐ рд╣реЛрдЧреА рдЬреЛ рдкрд░рд┐рд╢реБрджреНрдзрддрд╛ рдХреЛ рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред рдЖрдк рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рддрд░реАрдХрд╛ рднреА рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдПрдХ рд╕рдВрджреЗрд╢ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ:

рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕реНрдереИрддрд┐рдХ рд╢реВрдиреНрдп рдореБрдЦрд░ (рдмрд┐рдЧрдбреЗрд╕рд┐рдорд▓ рдЕрдкреЗрдХреНрд╖рд┐рдд, рдмрд┐рдЧрдбреЗрд╕рд┐рдорд▓ рд╡рд╛рд╕реНрддрд╡рд┐рдХ, рдмреВрд▓рд┐рдпрди рд╕рдЯреАрдХ рдореИрдЯрд░реНрд╕) {
рдЕрдЧрд░ (рд╕рдЯреАрдХ рдорд╛рдорд▓реЛрдВ) {
Assert.assertEquals(рдЕрдкреЗрдХреНрд╖рд┐рдд, рд╡рд╛рд╕реНрддрд╡рд┐рдХ);
} рдЕрдиреНрдпрдерд╛ {
Assert.assertEquals(0, рдЕрдкреЗрдХреНрд╖рд┐рддред рддреБрд▓рдирд╛ рдХрд░реЗрдВ (рд╡рд╛рд╕реНрддрд╡рд┐рдХ));
}
}

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдХреНрдпрд╛ рдЖрдкрдиреЗ comparesEqualTo рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рд╣реИ?

рд╕рднреА 27 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдПрдХ рдХрд╛рдВрдЯрд╛ рдпрд╛ рдкреИрдЪ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╕рд╛рде рд░рдЦрдирд╛ рдЖрд╕рд╛рди рдмрд╛рдд рд╣реЛрдЧреА; рдЕрдЧрд░ рдЙрдЪрд┐рдд рд╣реБрдЖ рддреЛ рдореИрдВ рдЗрд╕реЗ рдХрд░рдиреЗ рдХреЛ рддреИрдпрд╛рд░ рд╣реВрдВред

рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдмреВрд▓рд┐рдпрди рдзреНрд╡рдЬ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЬреЛрд░ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рд░реВрдк рд╕реЗ рд╕рдорд╛рди рджрд╛рд╡рд╛ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рдирд╛рдо рд╣реИред рдореИрдВ рдЗрд╕реЗ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдПрдХреНрд╡рд╛рд▓реНрд╕() рдкрд░ рдЬреЛрд░ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЫреЛрдЯрд╛ рдХрд░ рджреВрдВрдЧрд╛ред

рдЬрдмрдХрд┐ рдореИрдВ рднрд╛рд╡рдирд╛ рд╕реЗ рд╕рд╣рдордд рд╣реВрдВ, рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдПрдХ рдЕрд▓рдЧ рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рдФрд░ рдореБрдЦрд░ рд╡рд┐рдзрд┐ рд╣реЛрдиреЗ рд╕реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рднреНрд░рдо рдХреЛ рджреВрд░ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓реЗрдЧреА, рдЦрд╛рд╕рдХрд░ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рдмреАрдЪ рдЬреЛ рдЕрдВрддрд░ рд╕реЗ рдкреВрд░реА рддрд░рд╣ рдЕрдирдЬрд╛рди рд╣реИрдВ рдпрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ, рдЕрдЧрд░ рдореИрдВрдиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдирд╣реАрдВ рдкрдврд╝рд╛ рд╣реЛрддрд╛ рддреЛ рдореИрдВ рдЖрдЧреЗ рдмрдврд╝рддрд╛ рдФрд░ assertEquals() рд▓рд┐рдП BigDecimal ред рд╕рд╛рдорд╛рдиреНрдп рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рд╡рд┐рдЬреНрдЮрд╛рдкрди рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░реЗрдЧрд╛тАФрдпрд╣ рдареАрдХ рдЙрд╕реА рддрд░рд╣ рдХрд╛рдо рдХрд░реЗрдЧрд╛ рдЬреИрд╕реЗ BigDecimal#equals() рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдореИрдВ рдпрд╣ рднреА рддрд░реНрдХ рджреВрдВрдЧрд╛ рдХрд┐ рдпрд╣ рдПрдХ рдЕрдЪреНрдЫреА рдмрд╛рдд рд╣реИ- рдпрд╣ рдХрд┐рд╕реА рдХреЛ рдпрд╣ рдорд╣рд╕реВрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ BigDecimal#equals() рдореВрд▓реНрдп рдФрд░ рдкреИрдорд╛рдиреЗ рджреЛрдиреЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╢рд╛рдпрдж рд╡рд╣ рд╡рд╣ рдирд╣реАрдВ рдерд╛ рдЬрд┐рд╕реЗ рд╡реЗ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рдереЗ-рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдиреНрдп рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдореИрдВ рдЗрд╕реЗ рдорд╛рдирддрд╛ рд╣реВрдВ _рд╣реИ_ред рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ, рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╣рдо рдпрд╣ рдЬрд╛рдВрдЪрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдХрд┐рд╕реА рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдпрд╛ рдЧрдпрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдорд╛рди рдЕрдкреЗрдХреНрд╖рд┐рдд рдореВрд▓реНрдп рдХреЗ _exactly_ 'рдмрд░рд╛рдмрд░' рд╣реИ (рди рдХрд┐ рдХреЗрд╡рд▓ рддрд╛рд░реНрдХрд┐рдХ/рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдмрд░рд╛рдмрд░)ред рдЗрд╕реЗ рджреВрд╕рд░реЗ рддрд░реАрдХреЗ рд╕реЗ рд░рдЦреЗрдВ: assertNumericallyEquals() рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ (рд╕рдВрдХреНрд╖рд┐рдкреНрддрддрд╛ рд╕реЗ рдЕрд▓рдЧ) рдЬреЛ assertEquals(0, actual.compareTo(expected)) рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ? рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдореИрдВ рд╢рд╛рдпрдж рдПрдХ рд╣реИрдордХреНрд░реЗрд╕реНрдЯ рдореИрдЪрд░ рдмрдирд╛рдКрдВрдЧрд╛ рдФрд░ assertThat(actual, isNumericallyEqualTo(expected)) рдЬрд╛рдКрдВрдЧрд╛ рдпрджрд┐ рдореБрдЭреЗ рдЗрд╕рдХреА рдЕрдХреНрд╕рд░ рдкрд░реНрдпрд╛рдкреНрдд рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ - рд╕рд╛рде рд╣реА, рдХрд╣реАрдВ рднреА рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рд╣реИрдордХреНрд░реЗрд╕реНрдЯ рдореИрдЪрд░реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдбреЗрдЯрд╛ рд╕рддреНрдпрд╛рдкрди, рджреВрд╕рд░реЛрдВ рдХреЗ рдмреАрдЪ)ред

рджреЗрд░ рд╕реЗ рд╡рдЬрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдореЗрд░реА рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░рд╛рдп рдПрд▓рд┐рд╕реНрдЯреЗрдпрд░ рдХреЗ рдХрд░реАрдм рд╣реИред

рдЗрд╕реЗ рджреВрд╕рд░реЗ рддрд░реАрдХреЗ рд╕реЗ рд░рдЦреЗрдВ: assertNumericallyEquals() рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ (рд╕рдВрдХреНрд╖рд┐рдкреНрддрддрд╛ рд╕реЗ рдЕрд▓рдЧ) рдЬреЛ assertEquals(0, actual.compareTo(expected)) рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ?

рдЗрд░рд╛рджреЗ рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕рдВрдкреНрд░реЗрд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ? рд╣реИрдордХреНрд░реЗрд╕реНрдЯ рдореИрдЪрд░ рдЕрдкреНрд░реЛрдЪ рдореЗрд░реЗ рд╕рд╛рде рдареАрдХ рд╣реИред

рдЬреЗрдлреНрд░реА,

рдХреНрдпрд╛ рдЖрдк рдХрд╣ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдЖрдк рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдЙрд╕ рдореИрдЪрд░ рдХреЛ рдареАрдХ рд╕реЗ рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВ, рдпрд╛ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕реЗ рд╣реИрдордХреНрд░реЗрд╕реНрдЯ рдХреЗ рд╕рд╛рде рднреЗрдЬ рджрд┐рдпрд╛ рдЬрд╛рдП? рдпрд╛ рдЬреБрдиреАрдЯ, рд▓реЗрдХрд┐рди рд╣реИрдордХреНрд░реЗрд╕реНрдЯ рдирд╣реАрдВ?

рдЙрдкрд░реЛрдХреНрдд рдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдпрд╛ рд╕рднреА - рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦреА рдЧрдИ рдЕрдзрд┐рдХрд╛рдВрд╢ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдХреБрдЫ рдХрд╕реНрдЯрдо рд╣реИрдордХреНрд░реЗрд╕реНрдЯ рдореИрдЪрд░реНрд╕ рд╣реЛрддреЗ рд╣реИрдВред Hamcrest рдФрд░/рдпрд╛ JUnit рджреНрд╡рд╛рд░рд╛ рдХрд╡рд░ рдХрд┐рдП рдЧрдП рд╕рд╛рдорд╛рдиреНрдп рдорд╛рдорд▓реЛрдВ рдХреЗ рд╣реЛрдиреЗ рд╕реЗ рдереЛрдбрд╝рд╛ рд╕рдордп рдмрдЪрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рднреА рдореЗрд░реЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд╛рдорд╛рдиреНрдп рдорд╛рдорд▓рд╛ рдирд╣реАрдВ рд░рд╣рд╛ рд╣реИред

рдХрдо рдЙрдкрдпреЛрдЧреА рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдЫреЛрдЯреА рд╕реА рдмрд╛рдд .. рдореИрдВрдиреЗ рдЕрднреА-рдЕрднреА рдЕрдкрдиреЗ Assert.assertEquals рдХреЙрд▓ рдХреЛ Assert.assertTrue рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ BigDecimals рдХреА Assert.assertEquals рд╕реЗ рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓рддрд╛рдПрдБ рд╣реЛрддреА рд╣реИрдВред рдмреЗрд╢рдХ рдЕрдм рдореЗрд░реЗ рдкрд░реАрдХреНрд╖рдг рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреА "рдмреВрд▓рд┐рдпрди рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдлрд▓" рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рдореБрдЭреЗ рдпрд╣ рдмрддрд╛рдП рдмрд┐рдирд╛ рдХрд┐ рдореВрд▓реНрдп рдХреНрдпрд╛ рдереЗред рдЙрд╕реА рддрд░рд╣, assertEquals(0, real.compareTo(expected)) рд▓реЙрдЧ рдЗрди рдХрд░реЗрдЧрд╛ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП "рдЕрдкреЗрдХреНрд╖рд┐рдд 0 рд▓реЗрдХрд┐рди рдорд┐рд▓рд╛: 1" рдЬрдм рдПрдХ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧреА рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ assertNumericallyEquals(рд╡рд╛рд╕реНрддрд╡рд┐рдХ, рдЕрдкреЗрдХреНрд╖рд┐рдд) рд╕реЗ рд╣реЛрдЧрд╛ "рдЕрдкреЗрдХреНрд╖рд┐рдд 12.45 рд▓реЗрдХрд┐рди рдорд┐рд▓ рдЧрдпрд╛ : 123" ('рд╡рд╛рд╕реНрддрд╡рд┐рдХ' рдФрд░ 'рдЕрдкреЗрдХреНрд╖рд┐рдд' рддрд░реНрдХреЛрдВ рдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдорд╛рди)ред

http://www.bssd.eu/blog/?p=113 рдкрдврд╝рдирд╛ рднреА рджрд┐рд▓рдЪрд╕реНрдк рдмрдирд╛рддрд╛ рд╣реИред

https://github.com/KentBeck/junit/pull/228 рд╕реЗ assertEquivalent рдЗрд╕реЗ рд╣рд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдзрдиреНрдпрд╡рд╛рдж рдбреАрдПрд╕рдПрдлрд╝ред рд╡рд╣ рдХрд╛рдо рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд▓рдЧ рд░рд╣рд╛ рд╣реИред рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рдХреНрдпрд╛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдЬреВрдирд┐рдЯ рд╕реНрд░реЛрдд рд▓рд╛рдирд╛ рд╣реИ, рдЗрд╕ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдХреЛ рд╕реНрд╡рдпрдВ рдорд░реНрдЬ рдХрд░рдирд╛ рд╣реИ, рдФрд░ рдПрдХ рдХрд╕реНрдЯрдо рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рд╣реИ?

http://help.github.com/send-pull-requests/ рдкрд░ рд╕рд╣рд╛рдпрддрд╛ рд╕реЗ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдпрд╣ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:

рдЧрд┐рдЯ рдХреНрд▓реЛрди https://github.com/KentBeck/junit.git
рд╕реАрдбреА рдЬреВрдирд┐рдЯ

рдФрд░ рдлрд┐рд░ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рд░рд┐рдореЛрдЯ рдЬреЛрдбрд╝реЗрдВ, рдлрд┐рд░ рдпрд╛ рддреЛ рд▓рд╛рдПрдВ, рдорд░реНрдЬ рдХрд░реЗрдВ, рдпрд╛ рджреЛрдиреЛрдВ рдХрд░реЗрдВред

рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдпрд╣ рдПрдХ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдпрд╛рдиреА рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдЬреВрдирд┐рдЯ рдирд╣реАрдВ, рдХреНрдпрд╛ рдХрд┐рд╕реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреБрджреНрдзрд┐рдорд╛рдиреА рд╣реИ? рдХрд┐рд╕реА рднреА рдореМрдХреЗ рдкрд░ рдпрд╣ рдореБрдЦреНрдп рдЬреВрдирд┐рдЯ рдХреЗ рдмрд╛рд╣рд░ рдврд▓ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдореБрдЭреЗ рдЕрдкрдирд╛ рдХреЛрдб рджреВрд╕рд░реЛрдВ рдХреЛ рднреЗрдЬрдиреЗ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рд╣реЛрдЧреА, рдЬрд┐рдирдХреЗ рд▓рд┐рдП рдпрд╣ рдирд┐рд░реНрдорд╛рдг рдирд╣реАрдВ рдХрд░реЗрдЧрд╛?

рдиреАрдХрдлреЗрдирд╡рд┐рдХ,

рд╣рд╛рдВ, рдЖрдк рд╕рд╣реА рд░рд╛рд╕реНрддреЗ рдкрд░ рд╣реИрдВ рдХрд┐ рдЗрд╕реЗ рдЕрднреА рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИред рдореИрдВ рдЙрд╕ рдкреБрд▓ рдХреЛ 4.10 рд╢рд╛рдЦрд╛ рдореЗрдВ рд╡рд┐рд▓рдп рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореВрд▓ рд▓реЗрдЦрдХ рдХреЛ рдЧрд┐рдЯ рд╕реНрдерд┐рддрд┐ рд╡рд┐рд▓рдп рдХрд░рдиреЗ рдореЗрдВ рдкрд░реЗрд╢рд╛рдиреА рд╣реЛ рд░рд╣реА рд╣реИред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рджреБрдирд┐рдпрд╛ рдкрд░ рдПрд╣рд╕рд╛рди рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИ, рддреЛ рдЖрдк рдХреЗрдВрдЯрдмреЗрдХ рд░реЗрдкреЛ рдХреЛ рдлреЛрд░реНрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рдм рдХреБрдЫ рд╡рд┐рд▓рдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ 4.10 рд╢рд╛рдЦрд╛ рдХреЗ рдЦрд┐рд▓рд╛рдл рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдЬрд╛рд░реА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддрд╛рдХрд┐ рдпрд╣ рд╕рднреА рдХреЗ рд▓рд┐рдП рдЖрд╕рд╛рди рд╣реЛ (рдпрджрд┐ рдпрд╣ рд▓реЛрдХрдкреНрд░рд┐рдп рд▓рдЧ рд░рд╣рд╛ рд╣реИ, рддреЛ рдореИрдВ рд╕реНрдкрд┐рди рднреА рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ) рдХрднреА-рдХрднреА 4.10 рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рдЬрд╛рд░)ред

рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрд╣рд▓реЗ рдХрднреА рдирд╣реАрдВ рдпрд╣ рдХрд░ рд▓реЗрддреЗ рд╣реИрдВ :) рддреЛ рдореИрдВ рд░реЗрдкреЛ рдХрд╛рдБрдЯреЗрджрд╛рд░ рд╣реИ рдФрд░ рдХреНрд▓реЛрди [email protected] : neekfenwick / junit.git рдЕрдкрдиреЗ рд╕реНрдерд╛рдиреАрдп рдорд╢реАрди рдХреЗ рд▓рд┐рдП (рдореИрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ GitHub рдЦрд╛рддрд╛ рд╣реИ рдФрд░ SSH рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреА рд╕реНрдерд╛рдкрдирд╛), рдФрд░ рдХрд╣рд╛ рд░реЗрдкреЛ рдХреЗ рд▓рд┐рдП рд░рд┐рдореЛрдЯ рдореИрдВрдиреЗ рдЗрд╕реЗ рдлреЛрд░реНрдХ рдХрд┐рдпрд╛:

git remote add upstream https://github.com/KentBeck/junit.git

рдмрд╕ рдЕрдЪреНрдЫреЗ рдЙрдкрд╛рдп рдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ рд╢рд╛рдЦрд┐рдд рдХрд┐рдпрд╛ рд╣реИ рддрд╛рдХрд┐ рдореИрдВ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдХреЛ HEAD рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХрд╣реАрдВ рдФрд░ рдорд░реНрдЬ рдХрд░ рд╕рдХреВрдВ:

git branch merge_pullreq_228
git checkout merge_pullreq_228

рдЕрдм рдореБрдЭреЗ рдЬреЛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдорд┐рд▓ рд╕рдХрддреЗ рд╣реИрдВ, рд╡реЗ рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ "рдЕрдм рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдХреЛ рдЕрдкрдиреА рд╢рд╛рдЦрд╛ рдореЗрдВ рдорд░реНрдЬ рдХрд░реЗрдВ"ред рдореИрдВ https://github.com/KentBeck/junit/pull/228/commits рдкрд░ рдкреБрд▓ 228 рдХреЗ рд▓рд┐рдП рдХрдорд┐рдЯ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ рд▓реЗрдХрд┐рди рдореИрдВ рдЙрдиреНрд╣реЗрдВ рдорд░реНрдЬ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛:

[neek junit (merge_pullreq_228)]$ git merge 57b49344
fatal: '57b49344' does not point to a commit

рдЪреВрдВрдХрд┐ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдореЗрд░реЗ рдЕрдкрдиреЗ рд░реЗрдкреЛ/рд╢рд╛рдЦрд╛ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЬреАрдердм рд╡реЗрдм рдЧреБрдИ (AFAIK) рдореЗрдВ рдорд░реНрдЬ рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред

рдХреНрдпрд╛ рдореИрдВ рдпрд╣ рд╕реЛрдЪрдиреЗ рдореЗрдВ рд╕рд╣реА рд╣реВрдВ рдХрд┐ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдореИрдВ 7 рдХрд╛рдореЛрдВ рдХреЛ рдЕрдкрдиреА рд╢рд╛рдЦрд╛ рдореЗрдВ рд╡рд┐рд▓рдп рдХрд░ рджреВрдВ рдФрд░ рдЗрд╕реЗ рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдг рдмрдирд╛рдиреЗ/рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рдкреНрдд рдХрд░реВрдВ? рдХреНрдпрд╛ рдЖрдк рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдореБрдЭреЗ рдЕрдкрдиреЗ рд░рд╛рд╕реНрддреЗ рдкрд░ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдирдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рдХреЛ рдорд░реНрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?

рдареАрдХ рд╣реИ, рдЖрдк рд╡реЗрдм рдорд░реНрдЬ рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:

git рд░рд┐рдореЛрдЯ рдРрдб leet3lite https://github.com/leet3lite/junit.git

рдФрд░ рдлрд┐рд░ рдЕрдкрдиреА рд╢рд╛рдЦрд╛ рд╕реЗ рдХреЙрд▓ рдХрд░реЗрдВ

рдЧрд┐рдЯ рдкреБрд▓ leet3lite рдорд╛рд╕реНрдЯрд░

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдореИрдВ рдЖрдорддреМрд░ рдкрд░ "рдлреЛрди рдкрд░" рдЧрд┐рдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╕рдордп рдПрдХ рдмрд╛рдд рднреВрд▓ рдЬрд╛рддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдЖрдкрдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдЖрд╣, рдореИрдВ рджреЗрдЦрддрд╛ рд╣реВрдВ, рдореБрдЭреЗ рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЛ рдорд░реНрдЬ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ .. leet3lite рдХреА рдорд╛рд╕реНрдЯрд░ рд╢рд╛рдЦрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрди рдкрд░ рд╣реИ, рдФрд░ рдпрд╣ рдЙрд╕ рдХрд╛рдо рдХреЛ рдореВрд▓ рдорд╛рд╕реНрдЯрд░ рдореЗрдВ рд╡рд┐рд▓рдп рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рд╣реИ рдЬреЛ рд╕рдорд╕реНрдпрд╛ рд╣реИред

рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдЙрд╕ рд╢рд╛рдЦрд╛ рдФрд░ HEAD рдХреЗ рдмреАрдЪ рд╡рд┐рд▓рдп рдХрд╛ рд╡рд┐рд░реЛрдз рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдЕрднреНрдпрд╛рд╕ рдХрд╛ рдкреВрд░рд╛ рдмрд┐рдВрджреБ рдпрд╣реА рд╣реИред

[neek junit (merge_pullreq_228)]$ git remote add leet3lite https://github.com/leet3lite/junit.git
[neek junit (merge_pullreq_228)]$ git pull leet3lite master
remote: Counting objects: 100, done.
remote: Compressing objects: 100% (39/39), done.
remote: Total 85 (delta 34), reused 77 (delta 26)
Unpacking objects: 100% (85/85), done.
From https://github.com/leet3lite/junit
 * branch            master     -> FETCH_HEAD
Auto-merging acknowledgements.txt
CONFLICT (content): Merge conflict in acknowledgements.txt
Auto-merging src/main/java/org/junit/Assert.java
Auto-merging src/test/java/org/junit/tests/AllTests.java
CONFLICT (content): Merge conflict in src/test/java/org/junit/tests/AllTests.java
Automatic merge failed; fix conflicts and then commit the result.
[neek junit (merge_pullreq_228|MERGING)]$ 

рдЕрдЧрд░ рдпрд╣ рдЖрдкрдХреЛ рд╕рдордЭрджрд╛рд░ рд▓рдЧрддрд╛ рд╣реИ, рддреЛ рдореИрдВ рдХрд▓ рдЗрд╕реЗ рдЬрд╛рд░реА рд░рдЦреВрдВрдЧрд╛ред рдпрд╣рд╛рдБ рд▓рдЧрднрдЧ рдЖрдзреА рд░рд╛рддред

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рд╕рд╣реА рдЬрдЧрд╣ рдкрд░ рд╣реИрдВред рдкрд╛рд╡рддреАред

рдЗрд╕реЗ рдЖрдЧреЗ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд-рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ 2 рд╕рд╛рд▓ рдкрд╣рд▓реЗ рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдбреАрдПрд╕рдПрдлрд╝ - рдирд╣реАрдВ ...?

4.11 рдореЗрдВ рдирд╣реАрдВ ;(рдореБрдЭреЗ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ

assertEquivalent() рдкрд░ рдЪрд░реНрдЪрд╛ #228 рдкрд░ рдЪрд▓реА рдЧрдИ рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ #376 рдкрд░ рдЪрд▓реА рдЧрдИ рдЬрд╣рд╛рдВ рд╣рдордиреЗ рддрдп рдХрд┐рдпрд╛ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣реИрдордХреНрд░реЗрд╕реНрдЯ рдХреЛ рдЗрд╕реЗ рд╣рд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

@junit-team/junit-committers рдореБрдЭреЗ рдЗрд╕реЗ рдмрдВрдж рдХрд░рдиреЗ рдкрд░ рдХреЛрдИ рдЖрдкрддреНрддрд┐ рд╣реИ?

рдореЗрд░реА рддрд░рдл рд╕реЗ рдХреЛрдИ рдЖрдкрддреНрддрд┐ рдирд╣реАрдВ рд╣реИред

рдУрд╣, рдлреНрд░рд╛рдпрдбрд┐рдпрди рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред :-) рдпрд╣рд╛рдБ рдХреЛрдИ рдЖрдкрддреНрддрд┐ рдирд╣реАрдВ рд╣реИред

рдареАрдХред рдлрд┐рд░ рдмрдВрджред

рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╣реИрдордХреНрд░реЗрд╕реНрдЯ рдореИрдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдареАрдХ рд╣реЛ рдЬрд╛рддреА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдпрд╣ рдХреЛрдб:

   assertThat(product.getRating(), is(equalTo(new BigDecimal("2.3"))));

рдЗрд╕ рдкрд░рд┐рдгрд╛рдо рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░реЗрдЧрд╛:

Expected: is <2.3>
     but: was <2.30000>

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬреВрдирд┐рдЯ рдпрд╛ рд╣реИрдордХреНрд░реЗрд╕реНрдЯ рдХреЛ рдЕрднреА рднреА isNumericEquivalent рд╡рд┐рдзрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдХреНрдпрд╛ рдЖрдкрдиреЗ comparesEqualTo рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рд╣реИ?

рд╣рд╛рдВ, comparesEqualTo рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдзрдиреНрдпрд╡рд╛рджред

рдпрд╣рд╛рдБ рдПрдХ рдЪреАрдЯ рд╢реАрдЯ рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдХреБрдЫ рд╕рдордп рдкрд╣рд▓реЗ рдмрдирд╛рдпрд╛ рдерд╛:
http://www.marcphilipp.de/blog/2013/01/02/hamcrest-quick-reference/

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

akarnokd picture akarnokd  ┬╖  27рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

terorontti picture terorontti  ┬╖  14рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

bigmikef picture bigmikef  ┬╖  39рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

aleenadavy90 picture aleenadavy90  ┬╖  13рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

sabi0 picture sabi0  ┬╖  13рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ