package mytest1; public class Cal { private static int result; public void add(int n){ result = result + n; } public void substract(int n){ //bug:正确的应该是result=result-n; result = result -1; } 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){ //bug,这里是个死循环 for(;;); } public void clear(){ result = 0; } public int getResult(){ return result; } }
package mytest1; import static org.junit.Assert.*; import org.junit.Before; import org.junit.Ignore; import org.junit.Test; public class CalTest { private static Cal cal = new Cal(); @Before public void setUp() throws Exception { cal.clear(); } @Test public void testAdd() { cal.add(2); cal.add(3); assertEquals(5, cal.getResult()); //fail("Not yet implemented"); } @Test public void testSubstract() { cal.add(10); cal.substract(2); assertEquals(8, cal.getResult()); //fail("Not yet implemented"); } @Ignore("Multiply() not yet implemented") @Test public void testMultiply() { } @Test public void testDivide() { cal.add(8); cal.divide(2); assertEquals(4, cal.getResult()); //fail("Not yet implemented"); } @Test(expected = ArithmeticException.class) public void divideByZero(){ cal.divide(0); } }4)执行单元测试类:右键Run As----Junit test。执行结果如下:
@是注解 @Test
|
表明下面是测试方法
|
@Test(timeout=200)
|
表示下面的测试是限时测试,如果超过规定的时间,就测试失败
|
@Test(expected=IllegalArgumentException.class)
|
异常测试,验证方法能否抛出预期的错误 |
@Ignore
|
注释掉一个测试方法或一个类,被注释的方法或类,不会被执行
|
@BeforeClass
|
修饰static的方法,在整个类执行之前执行该方法一次。
|
@AfterClass
|
同样修饰static的方法,在整个类执行结束前执行一次。如释放资源
|
@Before
|
修饰public void的方法,在每个测试用例(方法)执行时都会执行
|
@After
|
修饰public void的方法,在每个测试用例执行结束后执行
|
package com.hotelrestsys.frame.check_out; import org.junit.After; import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; public class DayDialogTest { @BeforeClass public static void beforeclass(){ System.out.println("beforeclass"); } @AfterClass public static void afterclass(){ System.out.println("afterclass"); } @Before public void setUp() throws Exception { System.out.println("before"); } @After public void tearDown() throws Exception { System.out.println("after"); } @Test public void test1() { System.out.println("test1"); } @Test public void test2(){ System.out.println("test2"); } }运行结果如下: