±à¼ÍƼö: |
±¾ÎÄÀ´×Ôcnblogs£¬Ö÷Òª½²½âÁËJUnit4¿ò¼Ü£¬½áºÏEclipse½²½âÁËJUnit4Ó¦Ó᣸ü¶àÄÚÈÝÇë¿´ÏÂÎÄ¡£ |
|
µ¥Ôª²âÊÔÊDZàд²âÊÔ´úÂ룬Ӧ¸Ã׼ȷ¡¢¿ìËٵر£Ö¤³ÌÐò»ù±¾Ä£¿éµÄÕýÈ·ÐÔ¡£
ºÃµÄµ¥Ôª²âÊԵıê×¼
JUnitÊÇJavaµ¥Ôª²âÊÔ¿ò¼Ü£¬ÒѾÔÚEclipseÖÐĬÈϰ²×°¡£
JUnit4
JUnit4ͨ¹ý×¢½âµÄ·½Ê½À´Ê¶±ð²âÊÔ·½·¨¡£Ä¿Ç°Ö§³ÖµÄÖ÷Ҫע½âÓУº
@BeforeClass È«¾ÖÖ»»áÖ´ÐÐÒ»´Î£¬¶øÇÒÊǵÚÒ»¸öÔËÐÐ
@Before ÔÚ²âÊÔ·½·¨ÔËÐÐ֮ǰÔËÐÐ
@Test ²âÊÔ·½·¨
@After ÔÚ²âÊÔ·½·¨ÔËÐÐÖ®ºóÔÊÐí
@AfterClass È«¾ÖÖ»»áÖ´ÐÐÒ»´Î£¬¶øÇÒÊÇ×îºóÒ»¸öÔËÐÐ
@Ignore ºöÂÔ´Ë·½·¨
ÏÂÃæ»ùÓÚEclipse½éÉÜJUnitµÄ»ù±¾Ó¦ÓÃ
»ù±¾²âÊÔ
н¨Ò»¸öÏîÄ¿½ÐJUnitTest£¬ÎÒÃDZàдһ¸öCalculatorÀ࣬ÕâÊÇÒ»¸öÄܹ»¼òµ¥ÊµÏÖ¼Ó¼õ³Ë³ý¡¢Æ½·½¡¢¿ª·½µÄ¼ÆËãÆ÷À࣬Ȼºó¶ÔÕâЩ¹¦ÄܽøÐе¥Ôª²âÊÔ¡£
public class Calculator
{
private static int result; // ¾²Ì¬±äÁ¿£¬ÓÃÓÚ´æ´¢ÔËÐнá¹û
public void add(int n) {
result = result + n;
}
public void substract(int n) {
result = result - 1; //Bug: ÕýÈ·µÄÓ¦¸ÃÊÇ result =result-n
}
public void multiply(int n) {
} // ´Ë·½·¨ÉÐδдºÃ
public void divide(int n) {
result = result / n;
}
public void square(int n) {
result = n * n;
}
public void squareRoot(int n) {
for (; ;) ; //Bug : ËÀÑ»·
}
public void clear() { // ½«½á¹ûÇåÁã
result = 0;
}
public int getResult(){
return result;
}
} |
1.½«JUnit4µ¥Ôª²âÊÔ°üÒýÈëÕâ¸öÏîÄ¿£ºÔÚ¸ÃÏîÄ¿ÉϵãÓÒ¼ü£¬µã¡°ÊôÐÔ¡±£¬Èçͼ

ÔÚµ¯³öµÄÊôÐÔ´°¿ÚÖУ¬Ê×ÏÈÔÚ×ó±ßÑ¡Ôñ¡°Java Build Path¡±£¬È»ºóµ½ÓÒÉÏÑ¡Ôñ¡°Libraries¡±±êÇ©£¬Ö®ºóÔÚ×îÓұߵã»÷¡°Add
Library¡¡±°´Å¥£¬ÈçÏÂͼËùʾ



È»ºóÔÚе¯³öµÄ¶Ô»°¿òÖÐÑ¡ÔñJUnit4²¢µã»÷È·¶¨£¬ÈçÉÏͼËùʾ£¬JUnit4Èí¼þ°ü¾Í±»°üº¬½øÎÒÃÇÕâ¸öÏîÄ¿ÁË¡£
2.Éú³ÉJUnit²âÊÔ¿ò¼Ü£ºÔÚEclipseµÄPackage ExplorerÖÐÓÃÓÒ¼üµã»÷¸ÃÀ൯³ö²Ëµ¥£¬Ñ¡Ôñ¡°New
JUnit Test Case¡±¡£ÈçÏÂͼËùʾ£º



µã»÷¡°ÏÂÒ»²½¡±ºó£¬ÏµÍ³»á×Ô¶¯ÁгöÄãÕâ¸öÀàÖаüº¬µÄ·½·¨£¬Ñ¡ÔñÄãÒª½øÐвâÊԵķ½·¨¡£´ËÀýÖУ¬ÎÒÃǽö¶Ô¡°¼Ó¡¢¼õ¡¢³Ë¡¢³ý¡±Ëĸö·½·¨½øÐвâÊÔ¡£

Ö®ºóϵͳ»á×Ô¶¯Éú³ÉÒ»¸öÐÂÀàCalculatorTest£¬ÀïÃæ°üº¬Ò»Ð©¿ÕµÄ²âÊÔÓÃÀý¡£ÄãÖ»ÐèÒª½«ÕâЩ²âÊÔÓÃÀýÉÔ×÷Ð޸ļ´¿ÉʹÓá£
ÍêÕûµÄCalculatorTest´úÂëÈçÏ£º
public class
CalculatorTest {
private static Calculator calculator = new Calculator();
@Before
public void setUp() throws Exception {
calculator.clear();
}
@Test
public void testAdd() {
calculator.add(3);
calculator.add(4);
assertEquals(7, calculator.getResult());
}
@Test
public void testSubstract() {
calculator.add(8);
calculator.substract(3);
assertEquals(5, calculator.getResult());
}
@Ignore("Multiply() Not yet implemented")
@Test
public void testMultiply() {
fail("Not yet implemented");
}
@Test
public void testDivide() {
calculator.add(8);
calculator.divide(2);
assertEquals(4, calculator.getResult());
}
} |
1.ÔËÐвâÊÔ´úÂ룺°´ÕÕÉÏÊö´úÂëÐÞ¸ÄÍê±Ïºó£¬ÎÒÃÇÔÚCalculatorTestÀàÉϵãÓÒ¼ü£¬Ñ¡Ôñ¡°Run
As a JUnit Test¡±À´ÔËÐÐÎÒÃǵIJâÊÔ£¬ÈçÏÂͼËùʾ

ÔËÐнá¹ûÈçÏ£º

½ø¶ÈÌõÊǺìÑÕÉ«±íʾ·¢ÏÖ´íÎ󣬾ßÌåµÄ²âÊÔ½á¹ûÔÚ½ø¶ÈÌõÉÏÃæÓбíʾ¡°¹²½øÐÐÁË4¸ö²âÊÔ£¬ÆäÖÐ1¸ö²âÊÔ±»ºöÂÔ£¬Ò»¸ö²âÊÔʧ°Ü¡±¡£
ÏÞʱ²âÊÔ
¶ÔÓÚÄÇЩÂß¼ºÜ¸´ÔÓ£¬Ñ»·Ç¶ÌױȽÏÉîµÄ³ÌÐò£¬ºÜÓпÉÄܳöÏÖËÀÑ»·£¬Òò´ËÒ»¶¨Òª²ÉȡһЩԤ·À´ëÊ©¡£ÏÞʱ²âÊÔÊÇÒ»¸öºÜºÃµÄ½â¾ö·½°¸¡£ÎÒÃǸøÕâЩ²âÊÔº¯ÊýÉ趨һ¸öÖ´ÐÐʱ¼ä£¬³¬¹ýÁËÕâ¸öʱ¼ä£¬ËûÃǾͻᱻϵͳǿÐÐÖÕÖ¹£¬²¢ÇÒϵͳ»¹»áÏòÄã»ã±¨¸Ãº¯Êý½áÊøµÄÔÒòÊÇÒòΪ³¬Ê±£¬ÕâÑùÄã¾Í¿ÉÒÔ·¢ÏÖÕâЩBugÁË¡£ÒªÊµÏÖÕâÒ»¹¦ÄÜ£¬Ö»ÐèÒª¸ø@Test±ê×¢¼ÓÒ»¸ö²ÎÊý¼´¿É£¬´úÂëÈçÏ£º
@Test(timeout
= 1000)
public void squareRoot() {
calculator.squareRoot(4);
assertEquals(2, calculator.getResult());
} |
Timeout²ÎÊý±íÃ÷ÁËÄãÒªÉ趨µÄʱ¼ä£¬µ¥Î»ÎªºÁÃ룬Òò´Ë1000¾Í´ú±í1Ãë¡£


²âÊÔÒì³£
JAVAÖеÄÒì³£´¦ÀíÒ²ÊÇÒ»¸öÖØµã£¬Òò´ËÄã¾³£»á±àдһЩÐèÒªÅ׳öÒì³£µÄº¯Êý¡£ÄÇô£¬Èç¹ûÄã¾õµÃÒ»¸öº¯ÊýÓ¦¸ÃÅ׳öÒì³££¬µ«ÊÇËüûÅ׳ö£¬ÕâËã²»ËãBugÄØ£¿Õ⵱ȻÊÇBug£¬²¢JUnitÒ²¿¼Âǵ½ÁËÕâÒ»µã£¬À´°ïÖúÎÒÃÇÕÒµ½ÕâÖÖBug¡£ÀýÈ磬ÎÒÃÇдµÄ¼ÆËãÆ÷ÀàÓгý·¨¹¦ÄÜ£¬Èç¹û³ýÊýÊÇÒ»¸ö0£¬ÄÇô±ØÈ»ÒªÅ׳ö¡°³ý0Òì³£¡±¡£Òò´Ë£¬ÎÒÃǺÜÓбØÒª¶ÔÕâЩ½øÐвâÊÔ¡£´úÂëÈçÏ£º
@Test(expected
= ArithmeticException.class)
public void divideByZero(){
calculator.divide(0);
} |
ÈçÉÏÊö´úÂëËùʾ£¬ÎÒÃÇÐèҪʹÓÃ@Test±ê×¢µÄexpectedÊôÐÔ£¬½«ÎÒÃÇÒª¼ìÑéµÄÒì³£´«µÝ¸øËû£¬ÕâÑùJUnit¿ò¼Ü¾ÍÄÜ×Ô¶¯°ïÎÒÃǼì²âÊÇ·ñÅ׳öÁËÎÒÃÇÖ¸¶¨µÄÒì³£¡£
²ÎÊý»¯²âÊÔ
ÎÒÃÇ¿ÉÄÜÓöµ½¹ýÕâÑùµÄº¯Êý£¬ËüµÄ²ÎÊýÓÐÐí¶àÌØÊâÖµ£¬»òÕß˵ËûµÄ²ÎÊý·ÖΪºÜ¶à¸öÇøÓò¡£
ÀýÈ磬²âÊÔһϡ°¼ÆËãÒ»¸öÊýµÄƽ·½¡±Õâ¸öº¯Êý£¬ÔÝÇÒ·ÖÈýÀࣺÕýÊý¡¢0¡¢¸ºÊý¡£ÔÚ±àд²âÊÔµÄʱºò£¬ÖÁÉÙҪд3¸ö²âÊÔ£¬°ÑÕâ3ÖÖÇé¿ö¶¼°üº¬ÁË£¬ÕâȷʵÊÇÒ»¼þºÜÂé·³µÄÊÂÇé¡£²âÊÔ´úÂëÈçÏ£º
public class
AdvancedTest {
private static Calculator calculator £½ new Calculator();
@Before
public void clearCalculator(){
calculator.clear();
}
@Test
public void square1() {
calculator.square(2);
assertEquals(4, calculator.getResult());
}
@Test
public void square2(){
calculator.square(0);
assertEquals(0, calculator.getResult());
}
@Test
public void square3(){
calculator.square(-3);
assertEquals(9, calculator.getResult());
}
} |
ΪÁ˼ò»¯ÀàËÆµÄ²âÊÔ£¬JUnit4Ìá³öÁË¡°²ÎÊý»¯²âÊÔ¡±µÄ¸ÅÄֻдһ¸ö²âÊÔº¯Êý£¬°ÑÕâÈô¸ÉÖÖÇé¿ö×÷Ϊ²ÎÊý´«µÝ½øÈ¥£¬Ò»´ÎÐÔµÄÍê³É²âÊÔ¡£´úÂëÈçÏ£º
@RunWith(Parameterized.class)
public class SquareTest{
private static Calculator calculator = new Calculator();
private int param;
private int result;
@Parameters
public static Collection data() {
return Arrays.asList(new Object[][]{
{2, 4},
{0, 0},
{-3, 9},
});
}
//¹¹Ô캯Êý£¬¶Ô±äÁ¿½øÐгõʼ»¯
public SquareTest(int param, int result){
this.param = param;
this.result = result;
}
@Test
public void square(){
calculator.square(param);
assertEquals(result, calculator.getResult());
}
} |
Ö´ÐÐÁË3´Î¸Ã²âÊÔÀ࣬ÒÀ´Î²ÉÓÃÁËÊý¾Ý¼¯ºÏÖеÄÊý¾Ý{´¦ÀíÖµ£¬Ô¤ÆÚ´¦Àí½á¹û}£¬½á¹ûÈçÏ£º

´úÂë·ÖÎöÈçÏ£º
ΪÕâÖÖ²âÊÔרÃÅÉú³ÉÒ»¸öеÄÀ࣬¶ø²»ÄÜÓëÆäËû²âÊÔ¹²ÓÃͬһ¸öÀ࣬´ËÀýÖÐÎÒÃǶ¨ÒåÁËÒ»¸öSquareTestÀà¡£
ΪÕâ¸öÀàÖ¸¶¨Ò»¸öRunner£¬¶ø²»ÄÜʹÓÃĬÈϵÄRunner£¬@RunWith(Parameterized.class)ÕâÌõÓï¾ä¾ÍÊÇΪÕâ¸öÀàÖ¸¶¨ÁËÒ»¸öParameterizedRunner
¶¨ÒåÒ»¸ö´ý²âÊÔµÄÀ࣬²¢ÇÒ¶¨ÒåÁ½¸ö±äÁ¿£¬Ò»¸öÓÃÓÚ´æ·Å²ÎÊý£¬Ò»¸öÓÃÓÚ´æ·ÅÆÚ´ýµÄ½á¹û¡£
¶¨Òå²âÊÔÊý¾ÝµÄ¼¯ºÏ£¬Ò²¾ÍÊÇÉÏÊöµÄdata()·½·¨£¬¸Ã·½·¨¿ÉÒÔÈÎÒâÃüÃû£¬µ«ÊDZØÐëʹÓÃ@Parameters±ê×¢½øÐÐÐÞÊΡ£
¶¨Òå¹¹Ô캯Êý£¬Æä¹¦ÄܾÍÊǶÔÏÈǰ¶¨ÒåµÄÁ½¸ö²ÎÊý½øÐгõʼ»¯
|