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单元测试的主要内容,如果未能解决你的问题,请参考以下文章

四则运算单元测试

单元测试很棒,但是

词频统计单元测试

第1129期对vue.js单文件(.vue)进行单元测试

JUnit单元测试

Java单元测试(Junit+Mock+代码覆盖率)