尝试赶上JUnit测试

内尔施:

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

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Java异常没有测试中发现匹配时Junit5 ParameterizedTest尝试

尝试使用Spring运行jUnit测试时出现NoSuchFieldError

尝试赶上最后一节

尝试运行琐碎的Android JUnit测试。得到:“测试运行失败:没有测试结果”我缺少什么?

Junit测试方法

VBA + Excel +尝试赶上

Swift 2 iOS 9赶上尝试崩溃与意外意外发现零

尝试/赶上茉莉花

赶上SIGTERM与赶上SIGINT

尝试运行Junit测试时出现java.lang.IllegalArgumentException错误

尝试在Intellij 2018.2.RC中执行JUnit 4测试时出现NoClassDefFoundError

Elixir / Phoenix多次尝试功能,赶上:ok

尝试赶上插入python吗?

尝试Catch块有效,但测试assertThrows失败(Junit 5)

JUnit测试中的IllegalAnnotationExceptions

尝试运行JUnit 5测试时出现java.lang.NoClassDefFoundError

尝试使用Maven运行Mockito junit5测试时,java.lang.NoClassDefFoundError:org / junit / platform / commons / PreconditionViolationException

尝试找出JUnit测试和模型对象无法解释的错误

尝试编写Junit测试,但失败了

JUnit测试类失败测试

尝试赶上方法的返回

Java:是否尝试执行所有行,还是跳转以赶上?

如何使程序能够处理用户输入的其他符号?一会儿/尝试赶上?(java)

虽然-尝试-赶上Java

尝试赶上Swift 2.0

PHP的尝试赶上不能正常工作

每个Junit测试都可以正常工作,但是在尝试制作Suite时-无效

我的代码有什么问题?做一会儿然后尝试赶上

Junit 测试缺少测试