Assert类中静态方法:assertEquals(6, new Calculate().add(3, 3)); // 预期值与实际运行值是否相同。
1.测试方法上必须使用@Test进行修饰
2.测试方法必须使用public void进行修饰,不能带任何的参数
3.新建一个源代码目录来存放我们的测试代码
4.测试类的包应该和被测试类保持一致
5.测试单元中的每个方法必须可以独立测试,测试方法间不能有任何的依赖
6.测试类使用Test作为类名的后缀(不是必须)
7.测试方法使用test作为方法名的前缀(不是必须)
测试用例不是用来证明你是对的,而是用来证明你没有错。
测试用例用来达到想要的预期结果,但对于逻辑错误无能为力。
测试失败的两种情况:
- Failure一般由单元测试使用的断言方法判断失败所引起的,这就表示测试点发现了问题,就是说程序输出的结果和我们预期的不一样。
- error是由代码异常引起的,它可以产生于测试代码本身的错误,也可以是被测试代码中的一个隐藏的bug。
- 测试用例不是用来证明你是对的,而是用来证明你没有错。
Junit运行流程:
- @BeforeClass修饰的方法会在所有方法被调用前被执行,而且该方法是静态的,所以当测试类被加载后接着就会运行它,而且在内存中它只会存在一份实例,它比较适合加载配置文件。
- @AfterClass所修饰的方法通常用来对资源的清理,如关闭数据库的连接
- @Before和@After会在每个测试方法的前后各执行一次
Junit常用注解;
@Test:将一个普通的方法修成为一个测试方法
@Test(expected=XXException.class) 异常捕获
@Test(timeout=毫秒)
@BeforeClass:它会在所有的方法运行前被执行,static修饰
@AfterClass:它会在所有的方法运行后被执行,static修饰
@Before:会在每一个测试方法被运行前执行一次
@After:会在每一个测试方法运行后被执行一次
@Ignore:所修饰的测试方法会被测试运行器忽略
@RunWith:可以更改测试运行器 org.junit.runner.Runner
断言Assert 里面有数组、相同类型值比较等
Junit4中的测试套件:
测试套件就是组织测试类一起运行的
写一个作为测试套件的入口类,这个类里不包含其他的方法
更改测试运行器Suite.class
将要测试的类作为数组传入到@Suite.SuiteClasses( {} )
@RunWith(Suite.class)
@Suite.SuiteClasses({TaskTest1.class, TaskTest2.class, TaskTest3.class})
public class SuiteTest {
}
Junit4参数化设置:
1.更改默认的测试运行器为@RunWith(Parameterized.class)
2.声明变量来存放预期值 和结果值
3.声明一个返回值为Collection的公共静态方法,并使用@Parameters进行修饰
4.为测试类声明一个带有公共参数的公共构造函数,并在其中为之声明变量赋值
setup主要实现测试前的初始化工作,而teardown则主要实现测试完成后的垃圾回收等工作。
Jacoco插件:EclEmma
红色:测试未覆盖
黄色:测试部分覆盖(通常是if和switch)
绿色:测试已覆盖
开发者测试大赛要求:
全分支(所有条件判断语句真假值至少一次),全代码(所有方法)覆盖 就满分 100 (还有变异测试)
内嵌多个条件判断语句时,,整体条件判断语句真假值至少一次、部分条件判断语句也要真假值至少一次