JUnit--注解详解


JUnit

JUnit注解详解

@Test

在方法前加上@Test,定义为一个测试方法

测试方法必须是 public void 即公共,无返回值的,可抛出异常

@Test
public void add() {
    example test = new example();
    assertEquals(5,test.add(1,4));
}

@Ignore

暂时不运行某些测试方法/测试类,在测试方法前加上@Ignore注解,JUnit会统计Ignore次数

@Ignore
@Test
public void add() {
    example test = new example();
    assertEquals(5,test.add(1,4));
}

@BeforeClass

在运行几个测试方法时,可能需要在数据准备或其他准备中执行一些相同命令,此时为了代码更加清晰,更少冗余,可以将公用部分提取出来放在一个方法中,并注解@BeforeClass,在所有测试方法运行前先运行一次这个方法,例如创建数据库,读取文件等,该方法必须是public static void,即公共静态且无返回值

@BeforeClass
public static void aaa(){
    System.out.println("test begin");
}

@Before

与@BeforeClass区别,@Before会在每个用例运行之前先运行一遍,主要用于一些独立用例之前的准备工作,比如两个用例都需要读取数据库里用户A的信息,用例1读完后删除A的信息,而用例2读完后会修改A的信息,此时我们可以在@BeforeClass里建立数据库连接,在@Before里插入一条用户A的信息用以测试。

@Before
public void beforeTest(){
    System.out.println("test begin");
}

注:与上面的区别是此时根据用例数量输出了多行test begin

@After

与@Before对应

@RunWith()

概念:测试方法,测试类,测试集,测试运行器

测试方法:用@Test注解的一些方法

测试类:包含一个或多个测试方法的Test.java文件

测试集,是一个suite,包含多个测试类

测试运行器:决定运行方法偏好来运行测试方法/类/集

@RunWith()放在测试类名之前运行,用以确定运行方法,若不标注则会使用默认运行器

常见运行器:

1.@RunWith(Parameterized.class)

参数化运行器,配合@Parameter使用参数化功能

2.@RunWith(Suite.class)

@SuiteClasses({ATest.class,BTest.class,CTest.class})

测试集运行器配合使用测试集功能

3.@RunWith(JUnit4.class)

使用JUnit4默认运行器

4.@RunWith(JUnit38ClassRunner.class)

用于兼容JUnit3.8运行器

5.其他运行器功能

@RunWith(SpringJUnit4ClassRunner.class)

集成了Spring的一些功能

@RunWith(JUnit4.class)

@Parameter

用于使用参数化功能

限时测试

@Test(timeout = 1000)

测试逻辑复杂,嵌套较深的程序时,易出现死循环,故需要加入一些测试限定措施,限时测试规定了一个测试执行时间,若超过了测试规定的执行时间就会被系统强行终止,并且系统会汇报结束的原因为超时。在@Test注解中加入一个参数即可(@Test(timeout=1000)),单位为毫秒

@Test(timeout = 1000)

测试异常

@Test(expected = ArithmeticException.class)

@Test标注加上此参数,当代码无异常时也会抛出异常

@Test(expected = ArithmeticException.class)

自定义@MyTest注解并实现单元测试

目的

完成自定义注解@MyTest 并实现标有注解的方法并启动他(模拟@Test注解做单元测试)

步骤

1.新建一个注解类cannotation 命名为MyTest

2.创建一个TestJUnit单元测试类,写入几个方法,例如public void test();

3.创建一个MyTestDemo测试类(主功能实现类),该类利用反射机制来实现TestJUnit单元测试类中加@MyTest注解方法的启动

4.给予注解类生命周期与反射机制吻合,也就是定义注解可以保留到运行时,通过反射机制以获取注解信息

5.编写MyTestDemo测试类,利用反射机制获取TestJUnit单元测试类的所有方法对象,并获取单元测试类中所有方法对象,遍历所有方法对象执行加有@MyTest注解的方法

6.启动测试类查看结果(执行结果在最后)

注意:自定义注解类没有编写注解体,即无默认value值,标识需要启动的方法。

注解类编译后也是.class文件

通过反射机制来完成自定义注解操作,一定要给与注解和反射相同的生命周期

不会自动生成run方法启动项


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM