java单元测试
Posted 丁晓超
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java单元测试相关的知识,希望对你有一定的参考价值。
JUnit4 注解
- @Test (expected = Exception.class) 表示预期会抛出Exception.class 的异常
- @Ignore 含义是“某些方法尚未完成,暂不参与此次测试”。这样的话测试结果就会提示你有几个测试被忽略,而不是失败。一旦你完成了相应函数,只需要把@Ignore注解删去,就可以进行正常的测试。
- @Test(timeout=100) 表示预期方法执行不会超过 100 毫秒,控制死循环
- @Before 表示该方法在每一个测试方法之前运行,可以使用该方法进行初始化之类的操作
- @After 表示该方法在每一个测试方法之后运行,可以使用该方法进行释放资源,回收内存之类的操
- @BeforeClass 表示该方法只执行一次,并且在所有方法之前执行。一般可以使用该方法进行数据库连接操作,注意该注解运用在静态方法。
- @AfterClass 表示该方法只执行一次,并且在所有方法之后执行。一般可以使用该方法进行数据库连接关闭操作,注意该注解运用在静态方法。
使用断言而不是Print语句
许多新手开发人员习惯于在每行代码之后编写System.out.println语句来验证代码是否正确执行。这种做法常常扩展到单元测试,从而导致测试代码变得杂乱。除了混乱,这需要开发人员手动干预去验证控制台上打印的输出,以检查测试是否成功运行。更好的方法是使用自动指示测试结果的断言。
Junit3和Junit4都提供了一个Assert类,Assert类中定义了很多静态方法来进行断言。列表如下:
1 assertTrue(String message, boolean condition) 要求condition == true 2 assertFalse(String message, boolean condition) 要求condition == false 3 fail(String message) 必然失败,同样要求代码不可达 4 assertEquals(String message, XXX expected,XXX actual) 要求expected.equals(actual) 5 assertArrayEquals(String message, XXX[] expecteds,XXX [] actuals) 要求expected.equalsArray(actual) 6 assertNotNull(String message, Object object) 要求object!=null 7 assertNull(String message, Object object) 要求object==null 8 assertSame(String message, Object expected, Object actual) 要求expected == actual 9 assertNotSame(String message, Object unexpected,Object actual) 要求expected != actual 10 assertThat(String reason, T actual, Matcher matcher) 要求matcher.matches(actual) == true
以上是关于java单元测试的主要内容,如果未能解决你的问题,请参考以下文章