±à¼ÍƼö: |
±¾ÎÄÀ´×Ô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 »á×Ô¶¯²¶»ñÒì³££¬ÄÇЩûÓб»²¶»ñµÄÒì³£¾Í»á±»µ±³É´íÎó´¦ÀíÀ²£¡
|