当前位置: 首页 > 面试题库 >

尝试赶上JUnit测试

黄向明
2023-03-14
问题内容

我正在为已经存在很长时间的应用程序编写单元测试。我需要测试的一些方法是这样构建的:

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 这是我没有考虑的两个测试,因为我无法理解这些错误的含义。有人知道这些错误可能

  • 我不能在HttpSession上进行模拟。测试方法如下所示: 测试结果如下所示: 我总是得到未经授权的例外,但我需要避免它。如何为会话添加一些参数来模拟工作?

  • 我在Java EE托管bean中有以下代码: 其中facesContextProvider是一个用于返回faces上下文的自定义类(对于模拟测试很有用)。 我想知道如何使用Mockito在JUnit中测试这一点。我正在尝试以下方法的组合: 那么单元测试工具将是: 然后单元测试代码将是: