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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
javaµ¥Ôª²âÊÔJUnit¿ò¼ÜÔ­ÀíÓëÓ÷¨ÊµÀý½Ì³Ì
 
  4696  次浏览      32
 2019-6-13 
 
±à¼­ÍƼö:
±¾ÎÄÀ´×Ôcnblogs,Ö÷Òª½éÉÜÁËjavaµ¥Ôª²âÊÔJUnit¿ò¼ÜÔ­ÀíÓëÓ÷¨,½áºÏʵÀýÐÎʽ½ÏΪÏêϸµÄ·ÖÎöÁËjavaµ¥Ôª²âÊÔJUnit¿ò¼ÜµÄ¸ÅÄî¡¢Ô­Àí¡¢Ê¹Ó÷½·¨¼°Ïà¹Ø×¢ÒâÊÂÏî.

±¾ÎÄʵÀý½²ÊöÁËjavaµ¥Ôª²âÊÔJUnit¿ò¼ÜÔ­ÀíÓëÓ÷¨¡£·ÖÏí¸ø´ó¼Ò¹©´ó¼Ò²Î¿¼£¬¾ßÌåÈçÏ£º

1 ¼ò½é

JUnitÊÇÒ»¸öJavaÓïÑԵĵ¥Ôª²âÊÔ¿ò¼Ü£¬ËüÓÉ Kent Beck ºÍ Erich Gamma ½¨Á¢£¬Öð½¥³ÉΪ xUnit ¼Ò×åÖÐ×îΪ³É¹¦µÄÒ»¸ö¡£ JUnitÓÐËü×Ô¼ºµÄJUnitÀ©Õ¹Éú̬Ȧ£¬¶àÊýJavaµÄ¿ª·¢»·¾³¶¼ÒѾ­¼¯³ÉÁËJUnit×÷Ϊµ¥Ôª²âÊԵŤ¾ß¡£ÔÚÕâÀһ¸öµ¥Ôª¿ÉÒÔÊÇÒ»¸ö·½·¨¡¢Àà¡¢°ü»òÕß×Óϵͳ¡£Òò´Ë£¬µ¥Ôª²âÊÔÊÇÖ¸¶Ô´úÂëÖеÄ×îС¿É²âÊÔµ¥Ôª½øÐмì²éºÍÑéÖ¤£¬ÒÔ±ãÈ·±£ËüÃÇÕý³£¹¤×÷¡£ÀýÈ磬ÎÒÃÇ¿ÉÒÔ¸øÓèÒ»¶¨µÄÊäÈë²âÊÔÊä³öÊÇ·ñÊÇËùÏ£ÍûµÃµ½µÄ½á¹û¡£ÔÚ±¾Æª²©¿ÍÖУ¬×÷Õß½«×ÅÖØ½éÉÜ JUnit 4.X °æ±¾µÄÌØÐÔ£¬ÕâÒ²ÊÇÎÒÃÇÔÚÈÕ³£¿ª·¢ÖÐʹÓÃ×î¶àµÄ°æ±¾¡£

2 ÌØµã

JUnitÌṩÁË×¢ÊÍÒÔ¼°È·¶¨µÄ²âÊÔ·½·¨£»

JUnitÌṩÁ˶ÏÑÔÓÃÓÚ²âÊÔÔ¤ÆÚµÄ½á¹û£»

JUnit²âÊÔÓÅÑżò½à²»ÐèÒª»¨·ÑÌ«¶àµÄʱ¼ä£»

JUnit²âÊÔÈôó¼Ò¿ÉÒÔ¸ü¿ìµØ±àд´úÂë²¢ÇÒÌá¸ßÖÊÁ¿£»

JUnit²âÊÔ¿ÉÒÔ×éÖ¯³É²âÊÔÌ×¼þ°üº¬²âÊÔ°¸Àý£¬ÉõÖÁÆäËû²âÊÔÌ×¼þ£»

JunitÏÔʾ²âÊÔ½ø¶È£¬Èç¹û²âÊÔÊÇûÓÐÎÊÌâÌõÐÎÊÇÂÌÉ«µÄ£¬²âÊÔʧ°ÜÔò»á±ä³ÉºìÉ«£»

JUnit²âÊÔ¿ÉÒÔ×Ô¶¯ÔËÐУ¬¼ì²é×Ô¼ºµÄ½á¹û£¬²¢Ìṩ¼´Ê±·´À¡£¬Ã»ÓбØÒªÍ¨¹ý²âÊÔ½á¹û±¨¸æÀ´ÊÖ¶¯ÊáÀí¡£

3 ÄÚÈÝ

3.1 ×¢½â

@Test £º¸Ã×¢Êͱíʾ£¬ÓÃÆä¸½×ŵĹ«¹²ÎÞЧ·½·¨£¨¼´ÓÃpublicÐÞÊεÄvoidÀàÐ͵ķ½·¨ £©¿ÉÒÔ×÷Ϊһ¸ö²âÊÔÓÃÀý£»

@Before £º¸Ã×¢Êͱíʾ£¬ÓÃÆä¸½×ŵķ½·¨±ØÐëÔÚÀàÖеÄÿ¸ö²âÊÔ֮ǰִÐУ¬ÒÔ±ãÖ´ÐвâÊÔijЩ±ØÒªµÄÏȾöÌõ¼þ£»

@BeforeClass £º¸Ã×¢Êͱíʾ£¬ÓÃÆä¸½×ŵľ²Ì¬·½·¨±ØÐëÖ´ÐÐÒ»´Î²¢ÔÚÀàµÄËùÓвâÊÔ֮ǰ£¬·¢ÉúÕâÖÖÇé¿öʱһ°ãÊDzâÊÔ¼ÆËã¹²ÏíÅäÖ÷½·¨£¬ÈçÁ¬½Óµ½Êý¾Ý¿â£»

@After £º¸Ã×¢Êͱíʾ£¬ÓÃÆä¸½×ŵķ½·¨ÔÚÖ´ÐÐÿÏî²âÊÔºóÖ´ÐУ¬ÈçÖ´ÐÐÿһ¸ö²âÊÔºóÖØÖÃijЩ±äÁ¿£¬É¾³ýÁÙʱ±äÁ¿µÈ£»

@AfterClass £º¸Ã×¢Êͱíʾ£¬µ±ÐèÒªÖ´ÐÐËùÓеIJâÊÔÔÚJUnit²âÊÔÓÃÀýÀàºóÖ´ÐУ¬AfterClass×¢½â¿ÉÒÔʹÓÃÒÔÇåÀí½¨Á¢·½·¨£¬Èç¶Ï¿ªÊý¾Ý¿âÁ¬½Ó£¬×¢Ò⣺¸½ÓдËÅú×¢£¨ÀàËÆÓÚBeforeClass£©µÄ·½·¨±ØÐ붨ÒåΪ¾²Ì¬£»

@Ignore £º¸Ã×¢Êͱíʾ£¬µ±ÏëÔÝʱ½ûÓÃÌØ¶¨µÄ²âÊÔÖ´ÐпÉÒÔʹÓúöÂÔ×¢ÊÍ£¬Ã¿¸ö±»×¢½âΪ@IgnoreµÄ·½·¨½«²»±»Ö´ÐС£

/**
* JUnit ×¢½âʾÀý
*/
@Test
public void testYeepay(){
Syetem.out.println("ÓÃ@Test±êʾ²âÊÔ·½·¨£¡");
}
@AfterClass
public static void paylus(){
Syetem.out.println("ÓÃ@AfterClass±êʾµÄ·½·¨ÔÚ²âÊÔÓÃÀýÀàÖ´ÐÐÍêÖ®ºó£¡");
}

3.2 ¶ÏÑÔ

ÔÚÕâÀ×÷Õß½«½éÉÜһЩ¶ÏÑÔ·½·¨£¬ËùÓÐÕâЩ·½·¨¶¼À´×Ô org.junit.Assert À࣬ÆäÀ©Õ¹ÁË java.lang.Object ÀಢΪËüÃÇÌṩ±àд²âÊÔ£¬ÒÔ±ã¼ì²â¹ÊÕÏ¡£¼ò¶øÑÔÖ®£¬ÎÒÃǾÍÊÇͨ¹ý¶ÏÑÔ·½·¨À´ÅжÏʵ¼Ê½á¹ûÓëÎÒÃÇÔ¤ÆÚµÄ½á¹ûÊÇ·ñÏàͬ£¬Èç¹ûÏàͬ£¬Ôò²âÊԳɹ¦£¬·´Ö®£¬Ôò²âÊÔʧ°Ü¡£

void assertEquals([String message], expected value, actual value) £º¶ÏÑÔÁ½¸öÖµÏàµÈ£¬ÖµµÄÀàÐÍ¿ÉÒÔΪint¡¢short¡¢long¡¢byte¡¢char »òÕß

java.lang.Object£¬ÆäÖеÚÒ»¸ö²ÎÊýÊÇÒ»¸ö¿ÉÑ¡µÄ×Ö·û´®ÏûÏ¢£»

void assertTrue([String message], boolean condition) £º¶ÏÑÔÒ»¸öÌõ¼þÎªÕæ£»

void assertFalse([String message],boolean condition) £º¶ÏÑÔÒ»¸öÌõ¼þΪ¼Ù£»

void assertNotNull([String message], java.lang.Object object) £º¶ÏÑÔÒ»¸ö¶ÔÏó²»Îª¿Õ(null)£»

void assertNull([String message], java.lang.Object object) £º¶ÏÑÔÒ»¸ö¶ÔÏóΪ¿Õ(null)£»

void assertSame([String message], java.lang.Object expected, java.lang.Object actual) £º¶ÏÑÔÁ½¸ö¶ÔÏóÒýÓÃÏàͬµÄ¶ÔÏó£»

void assertNotSame([String message], java.lang.Object unexpected, java.lang.Object actual) £º¶ÏÑÔÁ½¸ö¶ÔÏó²»ÊÇÒýÓÃͬһ¸ö¶ÔÏó£»

void assertArrayEquals([String message], expectedArray, resultArray) £º¶ÏÑÔÔ¤ÆÚÊý×éºÍ½á¹ûÊý×éÏàµÈ£¬Êý×éµÄÀàÐÍ¿ÉÒÔΪint¡¢long¡¢short¡¢char¡¢byte »òÕß java.lang.Object

4 JUnit 3.X ºÍ JUnit 4.X µÄÇø±ð

4.1 JUnit 3.X

£¨1£©Ê¹Óà JUnit 3.X °æ±¾½øÐе¥Ôª²âÊÔʱ£¬²âÊÔÀà±ØÐëÒª¼Ì³ÐÓÚ TestCase ¸¸Àࣻ

£¨2£©²âÊÔ·½·¨ÐèÒª×ñÑ­µÄÔ­Ôò£º

¢Ù publicµÄ£»

¢Ú voidµÄ£»

¢Û ÎÞ·½·¨²ÎÊý£»

¢Ü·½·¨Ãû³Æ±ØÐëÒÔ test ¿ªÍ·£»

£¨3£©²»Í¬µÄ²âÊÔÓÃÀýÖ®¼äÒ»¶¨Òª±£³ÖÍêÈ«µÄ¶ÀÁ¢ÐÔ£¬²»ÄÜÓÐÈκεĹØÁª£»

£¨4£©ÒªÕÆÎպòâÊÔ·½·¨µÄ˳Ðò£¬²»ÄÜÒÀÀµÓÚ²âÊÔ·½·¨×Ô¼ºµÄÖ´ÐÐ˳Ðò¡£

/**
* Óà JUnit 3.X ½øÐвâÊÔ
*/
import junit.framework.Assert;
import junit.framework.TestCase;
public class TestOperation extends TestCase {
private Operation operation;
public TestOperation(String name) { // ¹¹Ô캯Êý
super(name);
}
@Override
public void setUp() throws Exception { // ÔÚÿ¸ö²âÊÔ·½·¨Ö´ÐÐ [֮ǰ] ¶¼»á±»µ÷Ó㬶àÓÃÓÚ³õʼ»¯
System.out.println("»¶Ó­Ê¹ÓÃJunit½øÐе¥Ôª²âÊÔ...");
operation = new Operation();
}
@Override
public void tearDown() throws Exception { // ÔÚÿ¸ö²âÊÔ·½·¨Ö´ÐÐ [Ö®ºó] ¶¼»á±»µ÷Ó㬶àÓÃÓÚÊÍ·Å×ÊÔ´
System.out.println("Junitµ¥Ôª²âÊÔ½áÊø...");
}
public void testDivideByZero() {
Throwable te = null;
try {
operation.divide(6, 0);
Assert.fail("²âÊÔʧ°Ü"); //¶ÏÑÔʧ°Ü
} catch (Exception e) {
e.printStackTrace();
te = e;
}
Assert.assertEquals(Exception.class, te.getClass());
Assert.assertEquals("³ýÊý²»ÄÜΪ 0 ", te.getMessage());
}
}

4.2 JUnit 4.X

£¨1£©Ê¹Óà JUnit 4.X °æ±¾½øÐе¥Ôª²âÊÔʱ£¬²»ÓòâÊÔÀà¼Ì³ÐTestCase¸¸Àࣻ

£¨2£©JUnit 4.X °æ±¾£¬ÒýÓÃÁË×¢½âµÄ·½Ê½½øÐе¥Ôª²âÊÔ£»

£¨3£©JUnit 4.X °æ±¾ÎÒÃdz£ÓõÄ×¢½â°üÀ¨£º

@Before ×¢½â£ºÓëJUnit 3.X ÖÐµÄ setUp() ·½·¨¹¦ÄÜÒ»Ñù£¬ÔÚÿ¸ö²âÊÔ·½·¨Ö®Ç°Ö´ÐУ¬¶àÓÃÓÚ³õʼ»¯£»

@After ×¢½â£ºÓë JUnit 3.X ÖÐµÄ tearDown() ·½·¨¹¦ÄÜÒ»Ñù£¬ÔÚÿ¸ö²âÊÔ·½·¨Ö®ºóÖ´ÐУ¬¶àÓÃÓÚÊÍ·Å×ÊÔ´£»

@Test(timeout = xxx) ×¢½â£ºÉèÖõ±Ç°²âÊÔ·½·¨ÔÚÒ»¶¨Ê±¼äÄÚÔËÐÐÍ꣬·ñÔò·µ»Ø´íÎó£»

@Test(expected = Exception.class) ×¢½â£ºÉèÖñ»²âÊԵķ½·¨ÊÇ·ñÓÐÒì³£Å׳ö¡£Å׳öÒì³£ÀàÐÍΪ£ºException.class£»

´ËÍ⣬ÎÒÃÇ¿ÉÒÔͨ¹ýÔĶÁÉÏÃæµÄµÚ¶þ²¿·Ö¡°2 ×¢½â¡±Á˽â¸ü¶àµÄ×¢½â¡£

/**
* Óà JUnit 4.X ½øÐвâÊÔ
*/
import static org.junit.Assert.*;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
public class TestOperation {
private Operation operation;
@BeforeClass
public static void globalInit() { // ÔÚËùÓз½·¨Ö´ÐÐ֮ǰִÐÐ
System.out.println("@BeforeClass±ê×¢µÄ·½·¨£¬ÔÚËùÓз½·¨Ö´ÐÐ֮ǰִÐÐ...");
}
@AfterClass
public static void globalDestory() { // ÔÚËùÓз½·¨Ö´ÐÐÖ®ºóÖ´ÐÐ
System.out.println("@AfterClass±ê×¢µÄ·½·¨£¬ÔÚËùÓз½·¨Ö´ÐÐÖ®ºóÖ´ÐÐ...");
}
@Before
public void setUp() { // ÔÚÿ¸ö²âÊÔ·½·¨Ö®Ç°Ö´ÐÐ
System.out.println("@Before±ê×¢µÄ·½·¨£¬ÔÚÿ¸ö²âÊÔ·½·¨Ö®Ç°Ö´ÐÐ...");
operation = new Operation();
}
@After
public void tearDown() { // ÔÚÿ¸ö²âÊÔ·½·¨Ö®ºóÖ´ÐÐ
System.out.println("@After±ê×¢µÄ·½·¨£¬ÔÚÿ¸ö²âÊÔ·½·¨Ö®ºóÖ´ÐÐ...");
}
@Test(timeout=600)
public void testAdd() { // ÉèÖÃÏÞ¶¨²âÊÔ·½·¨µÄÔËÐÐʱ¼ä Èç¹û³¬³öÔò·µ»Ø´íÎó
System.out.println("²âÊÔ add ·½·¨...");
int result = operation.add(2, 3);
assertEquals(5, result);
}
@Test
public void testSubtract() {
System.out.println("²âÊÔ subtract ·½·¨...");
int result = operation.subtract(1, 2);
assertEquals(-1, result);
}
@Test
public void testMultiply() {
System.out.println("²âÊÔ multiply ·½·¨...");
int result = operation.multiply(2, 3);
assertEquals(6, result);
}
@Test
public void testDivide() {
System.out.println("²âÊÔ divide ·½·¨...");
int result = 0;
try {
result = operation.divide(6, 2);
} catch (Exception e) {
fail();
}
assertEquals(3, result);
}
@Test(expected = Exception.class)
public void testDivideAgain() throws Exception {
System.out.println("²âÊÔ divide ·½·¨£¬³ýÊýΪ 0 µÄÇé¿ö...");
operation.divide(6, 0);
fail("test Error");
}
public static void main(String[] args) {
}
}

4.3 ÌØ±ðÌáÐÑ

ͨ¹ýÒÔÉÏÁ½¸öÀý×Ó£¬ÎÒÃÇÒѾ­¿ÉÒÔ´óÖÂÖªµÀ JUnit 3.X ºÍ JUnit 4.X Á½¸ö°æ±¾µÄÇø±ðÀ²£¡Ê×ÏÈ£¬Èç¹ûÎÒÃÇʹÓà JUnit 3.X£¬ÄÇôÔÚÎÒÃÇдµÄ²âÊÔÀàµÄʱºò£¬Ò»¶¨Òª¼Ì³Ð TestCase À࣬µ«ÊÇÈç¹ûÎÒÃÇʹÓà JUnit 4.X£¬Ôò²»Ðè¼Ì³Ð TestCase Àֱ࣬½ÓʹÓÃ×¢½â¾Í¿ÉÒÔÀ²£¡ÔÚ JUnit 3.X ÖУ¬»¹Ç¿ÖÆÒªÇó²âÊÔ·½·¨µÄÃüÃûΪ¡° testXxxx ¡±ÕâÖÖ¸ñʽ£»ÔÚ JUnit 4.X ÖУ¬Ôò²»ÒªÇó²âÊÔ·½·¨µÄÃüÃû¸ñʽ£¬µ«×÷Õß»¹Êǽ¨Òé²âÊÔ·½·¨Í³Ò»ÃüÃûΪ¡° testXxxx ¡±ÕâÖÖ¸ñʽ£¬¼ò½àÃ÷ÁË¡£

´ËÍ⣬ÔÚÉÏÃæµÄÁ½¸öʾÀýÖУ¬ÎÒÃÇÖ»¸ø³öÁ˲âÊÔÀ࣬µ«ÊÇÔÚÕâ֮ǰ£¬»¹Ó¦¸ÃÓÐÒ»¸ö±»²âÊÔÀ࣬Ҳ¾ÍÊÇÎÒÃÇÕæÕýҪʵÏÖ¹¦ÄܵÄÀà¡£ÏÖÔÚ£¬×÷Õß½«¸ø³öÉÏÃæÊ¾ÀýÖб»²âÊÔµÄÀ࣬¼´ Operation Àࣺ

/**
* ¶¨ÒåÁ˼Ӽõ³Ë³ýµÄ·¨Ôò
*/
public class Operation {
public static void main(String[] args) {
System.out.println("a + b = " + add(1,2));
System.out.println("a - b = " + subtract(1,2));
System.out.println("a * b = " + multiply(1,2));
System.out.println("a / b = " + divide(4,2));
System.out.println("a / b = " + divide(1,0));
}
public static int add(int a, int b) {
return a + b;
}
public static int subtract(int a, int b) {
return a - b;
}
public static int multiply(int a, int b) {
return a * b;
}
public static int divide(int a, int b) {
return a / b;
}
}

5 ²âÊÔʾÀý

5.1 ʾÀýÒ»£º¼òµ¥µÄ JUnit 3.X ²âÊÔ

import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
import java.util.ArrayList;
import java.util.Collection;
/**
* 1¡¢´´½¨Ò»¸ö²âÊÔÀ࣬¼Ì³ÐTestCaseÀà
*/
public class SimpleTestDemo extends TestCase {
public SimpleTestDemo(String name) {
super(name);
}
/**
* 2¡¢Ð´Ò»¸ö²âÊÔ·½·¨£¬¶ÏÑÔÆÚÍûµÄ½á¹û
*/
public void testEmptyCollection(){
Collection collection = new ArrayList();
assertTrue(collection.isEmpty());
}
/**
* 3¡¢Ð´Ò»¸ösuite()·½·¨£¬Ëü»áʹÓ÷´É䶯̬µÄ´´½¨Ò»¸ö°üº¬ËùÓеÄtestXxxx·½·¨µÄ²âÊÔÌ×¼þ
*/
public static Test suit(){
return new TestSuite(SimpleTestDemo.class);
}
/**
* 4¡¢Ð´Ò»¸ömain()·½·¨£¬ÒÔÎı¾ÔËÐÐÆ÷µÄ·½Ê½·½±ãµÄÔËÐвâÊÔ
*/
public static void main(String[] args) {
junit.textui.TestRunner.run(suit());
}
}

5.2 ʾÀý¶þ£ºÌ×¼þ²âÊÔ

Ê×ÏÈ£¬½éÉÜÒ»ÏÂÌ×¼þ²âÊÔ£¬¼òµ¥À´½²£¬²âÊÔÌ×¼þÊÇÖ¸£ºÒ»Ð©²âÊÔ²»Í¬ÀàµÄÓÃÀý£¬¿ÉÒÔʹÓà @RunWith ºÍ @Suite ×¢½â°ÑËùÓеIJâÊÔÀàÌ×ÔÚÒ»Æð£¬´Ó¶øÐγɲâÊÔÌ×¼þ¡£Èç¹ûÓкܶà²âÊÔÀ࣬ÏëÈÃËüÃǶ¼ÔËÐÐÔÚͬһʱ¼ä£¬¶ø²»Êǵ¥Ò»µØÔËÐÐÿ¸ö²âÊÔ£¬Ì×¼þ²âÊÔÊǷdz£ÓÐÓõġ£µ±Ò»¸öÀà±»×¢½âΪ @RunWith£¬ JUnit ½«µ÷ÓÃÆäÖеÄ×¢½â£¬ÒÔ±ãÔËÐвâÊÔÀ࣬¶ø²»Ê¹ÓÃÄÚÖÃµÄ JUnit ÔËÐз½·¨¡£

/**
* ´ý²âÊÔÀà
*/
import java.util.Arrays;
public class GotoWork {
public String[] prepareSkills() {
String[] skill = { "Java", "MySQL", "JSP" };
System.out.println("My skills include : " + Arrays.toString(skill));
return skill;
}
public String[] addSkills() {
String[] skill = { "Java", "MySQL", "JSP", "JUnit" };
System.out.println("Look, my skills include : " + Arrays.toString(skill));
return skill;
}
}

/**
* ²âÊÔÀà 1
*/
import org.junit.Test;
import static org.junit.Assert.*;
public class PrepareSkillsTest {
GotoWork gotoWork = new GotoWork();
String[] skill = { "Java", "MySQL", "JSP" };
@Test
public void testPrepareSkills() {
System.out.println("Inside testPrepareSkills()");
assertArrayEquals(skill, gotoWork.prepareSkills());
}
}

 

/**
* ²âÊÔÀà 2
*/
import org.junit.Test;
import static org.junit.Assert.*;
public class AddSkillsTest {
GotoWork gotoWork = new GotoWork();
String[] skill = { "Java", "MySQL", "JSP", "JUnit" };
@Test
public void testAddSkills() {
System.out.println("Inside testAddPencils()");
assertArrayEquals(skill, gotoWork.addSkills());
}
}

/**
* Ì×¼þ²âÊÔ
*/
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
@RunWith(Suite.class)
@Suite.SuiteClasses({ PrepareSkillsTest.class, AddSkillsTest.class })
public class SuitTest {
}

ʹÓà @Suite.SuiteClasses ×¢½â£¬¿ÉÒÔ¶¨Òå²âÊÔÀ࣬½«±»ÁÐÈëÖ´ÐУ¬²¢ÇÒÖ´ÐеÄ˳Ðò¾ÍÊÇÔÚ @Suite.SuiteClasses ×¢½âÖж¨ÒåµÄ˳Ðò¡£

5.3 ʾÀýÈý£º²ÎÊý»¯²âÊÔ

Ê×ÏȽéÉÜһϲÎÊý»¯²âÊÔ£¬Ò»¸ö²âÊÔÀà¿ÉÒÔ±»¿´×÷ÊÇÒ»¸ö²ÎÊý»¯²âÊÔÀ࣬µ±ÆäÂú×ãÏÂÁÐËùÓÐÒªÇó£º

¢Ù ¸ÃÀà±»×¢½âΪ @RunWith(Parameterized.class)£»

¢Ú ¸ÃÀàÓÐÒ»¸ö¹¹Ô캯Êý£¬´æ´¢²âÊÔÊý¾Ý£»

¢Û ¸ÃÀàÓÐÒ»¸ö¾²Ì¬·½·¨Éú³É²¢·µ»Ø²âÊÔÊý¾Ý£¬²¢±ê×¢ @Parameters ×¢½â£»

¢Ü ¸ÃÀàÓÐÒ»¸ö²âÊÔ·½·¨£¬¼´ÓÃ×¢½â @Test ±ê×¢µÄ·½·¨¡£

/**
* ´ý²âÊÔÀà
*/
public class Calculate {
public int sum(int var1, int var2) {
System.out.println("´Ë·½·¨µÄ²ÎÊýÖµ·Ö±ðΪ : " + var1 + " + " + var2);
return var1 + var2;
}
}




/**
* ²ÎÊý»¯²âÊÔÀà
*/
import static org.junit.Assert.assertEquals;
import java.util.Arrays;
import java.util.Collection;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
@RunWith(Parameterized.class)
public class CalculateTest {
private int expected;
private int first;
private int second;
public CalculateTest(int expectedResult, int firstNumber, int secondNumber) {
this.expected = expectedResult;
this.first = firstNumber;
this.second = secondNumber;
}
@Parameters
public static Collection addedNumbers() {
return Arrays.asList(new Integer[][] { { 3, 1, 2 }, { 5, 2, 3 }, { 7, 3, 4 }, { 9, 4, 5 }, });
}
@Test
public void testSum() {
Calculate add = new Calculate();
System.out.println("Addition with parameters : " + first + " and " + second);
assertEquals(expected, add.sum(first, second));
}
}


 

¹Û²ì CalculateTest À࣬ËüÂú×ãÉÏÊöËùÓеÄÒªÇó£¬Òò´ËËü¾Í¿ÉÒÔ³ÆÎªÒ»¸ö²ÎÊý»¯²âÊÔÀà¡£addedNumbers ·½·¨Ê¹ÓÃ×¢ÊÍ @Parameters ·µ»ØÊý×éµÄ¼¯ºÏ£¬Ã¿¸öÊý×é°üÀ¨Ã¿¸ö²âÊÔÖ´ÐÐÊäÈëºÍÊä³öÊý×Ö£¬Ã¿¸öÊý×éÖеÄÔªËØÊý±ØÐëÏàͬºÃÓë¹¹Ôì²ÎÊýµÄ¸öÊýÏàÆ¥Åä¡£ËùÒÔ£¬ÔÚÕâÖÖÌØ¶¨µÄÇé¿öÏ£¬Ã¿¸öÊý×é°üÀ¨Èý¸öÔªËØ£¬¼´±íʾҪ¼ÓÈëµÄÁ½¸öÔªËØºÍÒ»¸ö½á¹ûÔªËØ¡£

6 ¸öÈ˽¨Òé

ÓÐЩͯЬ¿ÉÄÜ»áÓÐһЩÎó½â£¬ÈÏΪд²âÊÔ´úÂëûÓÐÓ㬶øÇÒ»¹»áÔö´ó×Ô¼ºµÄѹÁ¦£¬ÀË·Ñʱ¼ä¡£µ«ÊÂʵÉÏ£¬Ð´²âÊÔ´úÂëÓë·ñ£¬»¹ÊÇÓкܴóÇø±ðµÄ£¬Èç¹ûÊÇÔÚСµÄÏîÄ¿ÖУ¬»òÐíÕâÖÖÇø±ð»¹²»Ì«Ã÷ÏÔ£¬µ«Èç¹ûÔÚ´óÐÍÏîÄ¿ÖУ¬Ò»µ©³öÏÖ´íÎó»òÒì³££¬ÓÃÈËÁ¦È¥ÅŲéµÄ»°£¬Äǽ«»áÀ˷Ѻܶàʱ¼ä£¬¶øÇÒ»¹²»Ò»¶¨ÅŲéµÄ³öÀ´£¬µ«ÊÇÈç¹ûÓòâÊÔ´úÂëµÄ»°£¬JUnit ¾ÍÊÇ×Ô¶¯°ïÎÒÃÇÅжÏһЩ´úÂëµÄ½á¹ûÕýÈ·Óë·ñ£¬´Ó¶ø½ÚÊ¡µÄʱ¼ä½«»áÔ¶Ô¶³¬¹ýÄãд²âÊÔ´úÂëµÄʱ¼ä¡£

Òò´Ë£¬¸öÈ˽¨Òé£ºÒªÑø³É±àд²âÊÔ´úÂëµÄϰ¹ß£¬ÂëÒ»µã¡¢²âÒ»µã£»ÔÙÂëÒ»µã£¬ÔÙ²âÒ»µã£¬Èç´ËÑ­»·¡£ÔÚÎÒÃDz»¶Ï±àдÓë²âÊÔ´úÂëµÄ¹ý³ÌÖУ¬ÎÒÃǽ«»á¶ÔÀàµÄÐÐΪÓÐÒ»¸ö¸üΪÉîÈëµÄÁ˽⣬´Ó¶ø¿ÉÒÔÓÐЧµÄÌá¸ßÎÒÃǵŤ×÷ЧÂÊ¡£ÏÂÃæ£¬×÷Õ߾͸ø³öһЩ¾ßÌåµÄ±àд²âÊÔ´úÂëµÄ¼¼ÇɺͽϺõÄʵ¼ù·½·¨£º

1. ²»ÒªÓà TestCase µÄ¹¹Ô캯Êý³õʼ»¯ Fixture£¬¶øÒªÓà setUp() ºÍ tearDown() ·½·¨£»

2. ²»ÒªÒÀÀµ»ò¼Ù¶¨²âÊÔÔËÐеÄ˳Ðò£¬ÒòΪ JUnit »áÀûÓà Vector ±£´æ²âÊÔ·½·¨£¬ËùÒÔ²»Í¬µÄƽ̨»á°´²»Í¬µÄ˳Ðò´Ó Vector ÖÐÈ¡³ö²âÊÔ·½·¨£»

3. ±ÜÃâ±àдÓи±×÷ÓÃµÄ TestCase£¬ÀýÈ磺Èç¹ûËæºóµÄ²âÊÔÒÀÀµÓÚÄ³Ð©ÌØ¶¨µÄ½»Ò×Êý¾Ý£¬¾Í²»ÒªÌá½»½»Ò×Êý¾Ý£¬Ö»ÐèÒª¼òµ¥µÄ»Ø¹ö¾Í¿ÉÒÔÁË£»

4. µ±¼Ì³ÐÒ»¸ö²âÊÔÀàʱ£¬¼ÇµÃµ÷Óø¸ÀàµÄ setUp() ºÍ tearDown() ·½·¨£»

5. ½«²âÊÔ´úÂëºÍ¹¤×÷´úÂë·ÅÔÚÒ»Æð£¬Í¬²½±àÒëºÍ¸üУ»

6. ²âÊÔÀàºÍ²âÊÔ·½·¨Ó¦¸ÃÓÐÒ»ÖµÄÃüÃû·½°¸£¬ÈçÔÚ¹¤×÷ÀàÃûǰ¼ÓÉÏ test ´Ó¶øÐγɲâÊÔÀàÃû£»

7. È·±£²âÊÔÓëʱ¼äÎ޹أ¬²»ÒªÊ¹ÓùýÆÚµÄÊý¾Ý½øÐвâÊÔ£¬ÒÔÖÁÓÚµ¼ÖÂÔÚËæºóµÄά»¤¹ý³ÌÖкÜÄÑÖØÏÖ²âÊÔ£»

8. Èç¹û±àдµÄÈí¼þÃæÏò¹ú¼ÊÊг¡£¬ÄÇô±àд²âÊÔʱһ¶¨Òª¿¼Âǹú¼Ê»¯µÄÒòËØ£»

9. ¾¡¿ÉÄܵØÀûÓà JUnit ÌṩµØ assert ºÍ fail ·½·¨ÒÔ¼°Òì³£´¦ÀíµÄ·½·¨£¬Æä¿ÉÒÔʹ´úÂë¸üΪ¼ò½à£»

10. ²âÊÔÒª¾¡¿ÉÄܵØÐ¡£¬Ö´ÐÐËٶȿ죻

11. ²»ÒªÓ²ÐԹ涨Êý¾ÝÎļþµÄ·¾¶£»

12. ʹÓÃÎĵµÉú³ÉÆ÷×ö²âÊÔÎĵµ¡£

ÊÂʵÉÏ£¬ÔÚ Junit ÖÐʹÓà try catch À´²¶»ñÒì³£ÊÇûÓбØÒªµÄ£¬ÒòΪ Junit »á×Ô¶¯²¶»ñÒì³££¬ÄÇЩûÓб»²¶»ñµÄÒì³£¾Í»á±»µ±³É´íÎó´¦ÀíÀ²£¡

   
4696 ´Îä¯ÀÀ       32
Ïà¹ØÎÄÕÂ

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

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

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