我正在为已经存在很长时间的应用程序编写单元测试。我需要测试的一些方法是这样构建的:
public void someMethod() throws Exception {
//do something
}
如果要测试这些方法,则必须在单元测试中编写如下代码:
@Test
public void someTest() {
try {
someMethod();
}
catch (Exception e) {
e.printStackTrace();
}
}
这样做是一种好习惯吗?还是有其他方法可以测试这些方法?
我在互联网上进行了一些研究,发现了一些带有和的@Rule
注释解决方案@Test(expected=Exception.class)
,但这是行不通的(Eclipse一直someMethod()
在测试中显示错误行)。我不知道这些是否是好的解决方案,因为对于整个单元测试来说,我还是一个新手。
如果对此有很多了解的人可以帮助我,我将非常感激。
由于Exception
是检查异常,因此您可以:
try...catch
语句中捕获异常,或者您在那里的一切正常,但是我个人的喜好是声明要抛出的异常。这样,如果在测试运行期间引发了意外的异常,则测试将失败。
@Test
public void someTest() throws Exception {
// dodgy code here
}
如果需要查看是否引发了特定的异常,则可以选择直接使用@Rule
值或将值添加到@Test
注释中。
@Test(expected = FileNotFoundException.class)
public void someTest() throws Exception {
// dodgy code here
}
在JUnit 5中,您可以利用它Assertions.assertThrows
来完成同一件事。我对此不太熟悉,因为在编辑时它还不是GA,但似乎可以接受Executable
来自JUnit 5的信息。
@Test
public void someTest() {
assertThrows(FileNotFoundException.class, () ->
{ dodgyService.breakableMethod() };
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句