我正在为已经存在很长时间的应用程序编写单元测试。我需要测试的一些方法是这样构建的:
public void someMethod() throws Exception {
//do something
}
如果要测试这些方法,则必须在单元测试中编写如下代码:
@Test
public void someTest() {
try {
someMethod();
}
catch (Exception e) {
e.printStackTrace();
}
}
这样做是一种好习惯吗?还是有其他方法可以测试这些方法?
我在Internet上进行了一些研究,发现了一些带有和的@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() };
}
问题内容: 我听到这样的观点,您应该完全避免使用try / catch,因为它占用很多资源。那么诺言错误处理会更快吗?还是没关系? UPD :我知道try / catch在内部的异步代码中不起作用。我只是在想是否由于性能问题而有任何避免使用try / catch的理由?以上两种方法之间有什么区别吗? UPD2 :试着跑我的马:) https://jsperf.com/try-catch-vs- p
问题内容: 我正在尝试熟悉Swift 2和iOS 9 的新声明 我的问题是,当NSURLSession发生错误时,data参数返回nil,而错误返回某些信息。在iOS 8中,这是预期的功能,我们只使用了if语句来查找Data是否为nil。 但是 ,有了,我想到了一个new 关键字,它旨在查看是否可以正常工作,如果不能正常工作,则默认为所编写的任何代码 但是,由于数据为零,所以我遇到了意外崩溃。这是
当我尝试运行一个简单的JUnit 5测试(eclipse)时,我遇到了以下错误: 这是我的: 我尝试过类似问题的一些建议,比如这个github问题和其他问题,但是没有成功。我还在学习JUnit,所以我可能会忘记一些显而易见的东西。
我正在为Junit编写测试,以测试我编写的删除函数: 此方法适用于同时具有前后节点的双链接列表。 问题是:我们的大学将针对我们编写的测试运行错误代码,以确定我们是否编写了足够的测试来捕获错误代码和异常。 我知道他们将运行的两个测试,但不知道错误的含义。 > 失败:缺少逻辑 故障:缺少NextNodeRepairLogic 这是我没有考虑的两个测试,因为我无法理解这些错误的含义。有人知道这些错误可能
问题内容: 到目前为止,我有两个测试。一个仅使用jUnit框架即可正常工作。另一个使用spring-test库并在每次尝试运行该异常时创建此异常。有什么想法可能导致问题吗? Error Maven test dependencies Dependency tree 问题答案: 你是否正在使用旧版本的Eclipse(Galileo或更低版本)?还是旧版的junit插件?如果是这样,则可能是问题的原因
我不能在HttpSession上进行模拟。测试方法如下所示: 测试结果如下所示: 我总是得到未经授权的例外,但我需要避免它。如何为会话添加一些参数来模拟工作?