Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
Javaµ¥Ôª²âÊÔÖ®JUnitƪ
 
  2182  次浏览      27
 2019-3-14 
 
±à¼­ÍƼö:
±¾ÎÄÀ´×Ô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±ê×¢½øÐÐÐÞÊΡ£

¶¨Òå¹¹Ô캯Êý£¬Æä¹¦ÄܾÍÊǶÔÏÈǰ¶¨ÒåµÄÁ½¸ö²ÎÊý½øÐгõʼ»¯

   
2182 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕÂ

΢·þÎñ²âÊÔÖ®µ¥Ôª²âÊÔ
һƪͼÎÄ´øÄãÁ˽â°×ºÐ²âÊÔÓÃÀýÉè¼Æ·½·¨
È«ÃæµÄÖÊÁ¿±£ÕÏÌåϵ֮»Ø¹é²âÊÔ²ßÂÔ
È˹¤ÖÇÄÜ×Ô¶¯»¯²âÊÔ̽Ë÷
Ïà¹ØÎĵµ

×Ô¶¯»¯½Ó¿Ú²âÊÔʵ¼ù֮·
jenkins³ÖÐø¼¯³É²âÊÔ
ÐÔÄܲâÊÔÕï¶Ï·ÖÎöÓëÓÅ»¯
ÐÔÄܲâÊÔʵÀý
Ïà¹Ø¿Î³Ì

³ÖÐø¼¯³É²âÊÔ×î¼Ñʵ¼ù
×Ô¶¯»¯²âÊÔÌåϵ½¨ÉèÓë×î¼Ñʵ¼ù
²âÊԼܹ¹µÄ¹¹½¨ÓëÓ¦ÓÃʵ¼ù
DevOpsʱ´úµÄ²âÊÔ¼¼ÊõÓë×î¼Ñʵ¼ù