junit4

JUnit 4全面引入了Annotation来执行我们编写的测试。JUnit 4并不要求测试类继承TestCase父类。在一个测试类中,所有被@Test注解所修饰的public,void方法都是test case(测试用例),可以被JUnit所执行。

虽然JUnit 4并不要求测试方法名以test开头,但我们最好还是按照JUnit 3.8的要求那样,以test作为测试方法名的开头。

在JUnit 4中,通过@Before注解实现与JUnit 3.8中的setUp方法同样的功能,通过@After注解实现与JUnit 3.8中的tearDown方法同样的功能。

在JUnit 4中,可以使用@BeforeClass与@AfterClass注解修饰一个public static void no-arg的方法,这样被@BeforeClass注解所修饰的方法会在所有测试方法执行前执行,在所有方法执行之前只执行一次;被@AfterClass注解所修饰的方法会在所有测试方法执行之后执行,在所有方法执行之后只执行一次.

public class CaculatorTest {
 private Caculator caculator;
 
 @BeforeClass
 public static void init(){
  System.out.println("init");
 }
 @AfterClass
 public static void des(){
  System.out.println("des");
 }
 
 @Before
 public void setUp(){
  caculator=new Caculator();
  System.out.println("setUP");
 }
 @After
 public void tearDown(){
  System.out.println("tear down");
 }
 @Test(timeout=200)
 public void testAdd(){
  int result=caculator.add(2,3);
  
  Assert.assertEquals(5,result);
 }
 @Test
 public void testSubtract(){
  int result=caculator.subtract(3,4);
  Assert.assertEquals(-1,result);
 }
 @Test
 public void testMultpli(){
  int reuslt=caculator.multpli(3,4);
  Assert.assertEquals(12,reuslt);
 }
 @Test(expected=Exception.class)
 public void testDiv()throws Exception{
  int result=caculator.div(5,0);
 }
}
@Ignore注解可用于修饰测试类与测试方法,当修饰测试类时,表示忽略掉类中的所有测试方法;当修饰测试方法时,表示忽略掉该测试方法。注意的是要在@Test声明之后用@Ignore

@Test(expected=Exception.class)
 @Ignore
 public void testGetLargest3() throws Exception{
  ma.getLargest(new int[]{});
 }

 

junit4中的运行器:

三个运行器:内置的,当不用@RunWith时用的是eclipse的,parameterized即参数化运行器,Suite运行器,即测试套件运行器.

参数化测试(Parameters):当一个测试类使用参数化运行器运行时,需要在类的声明处加上@RunWith(Parameterized.class)注解,表示该类将不使用JUnit内建的运行器运行,而使用参数化运行器运行;在参数化运行类中提供参数的方法上要使用@Parameters注解来修饰,同时在测试类的构造方法中为各个参数赋值(构造方法是由JUnit调用的),最后编写测试类,它会根据参数的组数来运行测试多次。

@RunWith(Parameterized.class)
public class ParameterizedTest {
 
 private int excepted;
 private int input1;
 private int input2;
 private Caculator cal;
 
 @Before
 public void setUp(){
  cal=new Caculator();
 }
 
 @Parameters
 public static Collection initData(){
  Object[] obj=new Object[][]{{2,1,1},{6,4,2},{9,2,7},{-4,-3,-1}};
  return Arrays.asList(obj);
 }
 
 public ParameterizedTest(int excepted,int input1,int input2){
  this.excepted=excepted;
  this.input1=input1;
  this.input2=input2;
 }
 @Test
 public void testAdd(){
  Assert.assertEquals(this.excepted,cal.add(input1,input2));
 }
}

在JUnit 4中,如果想要同时运行多个测试,需要使用两个注解:@RunWith(Suite.class)以及@Suite.SuiteClasses(),通过这两个注解分别指定使用Suite运行器来运行测试,以及指定了运行哪些测试类,其中的@SuiteClasses中可以继续指定Suite,这样JUnit会再去寻找里面的测试类,一直找到能够执行的Test Case并执行之。

@RunWith(Suite.class)
@SuiteClasses({TestAll.class,CaculatorTest.class,MaxArrayTest.class})
public class TestAll2 {

}

两个运行器都可以参看参考文档

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yjsuge

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值