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

JUnit4 fail()在这里,但是pass()在哪里?

巫晋鹏
2023-03-14
问题内容

fail()JUnit4库中有一个方法。我喜欢它,但是缺少pass()一种库中不存在的方法。为什么会这样呢?

我发现我可以assertTrue(true)代替使用,但看起来仍然不合逻辑。

@Test
 public void testSetterForeignWord(){
  try {
   card.setForeignWord("");
   fail();
  } catch (IncorrectArgumentForSetter ex){
  }

 // assertTrue(true);
 }

问题答案:

只要测试没有引发异常,它就会通过,除非您的@Test注释指定了预期的异常。我想pass()可能会抛出一个特殊的异常,JUnit总是将其解释为通过,从而使测试短路,但这会违背通常的测试设计(即假设成功,并且仅在断言失败时失败),并且如果有人最好使用的想法pass(),这将大大减慢大量通过测试的速度(由于异常创建的开销)。失败的测试不应该成为常态,因此,如果有这些开销,那就没什么大不了的。

请注意,您的示例可以这样重写:

@Test(expected=IncorrectArgumentForSetter.class)
public void testSetterForeignWord("") throws Exception {
  card.setForeignWord("");
}

另外,您应该赞成使用标准Java异常。您IncorrectArgumentForSetter可能应该是一个IllegalArgumentException



 类似资料:
  • 我试图运行迁移与自定义DbContext。 这会引发迁移异常,因为未实现无参数构造函数: “目标上下文”系统。数据实体DbContext“”不可构造。添加默认构造函数或提供IDbContextFactory的实现。 构造函数需要参数,但我已经有了

  • 严重程度代码说明项目文件行列警告CS1998此异步方法缺少await操作符,将同步运行。考虑使用'await'运算符来等待非阻塞API调用,或者使用'await task.run(...)'在后台线程上执行CPU绑定的工作。ImageParser C:\users\johny\documents\visual Studio 2015\projects\ImageParser\imdbsample\

  • 问题内容: 我有PyCharm,正在四处寻找git.exe,以使用我的存储库进行设置。 git.exe的路径是什么? 问题答案: 如果您在Windows上使用GitHub,则git.exe可能不在您的PATH中,但是您可以在以下位置找到它:C:\Users\ \AppData\Local\GitHub\PortableGit_ \bin\git.exe 我的情况就是这样,在Windows 7 +

  • 问题内容: 跑步, 安装后,我看到它说 位置在哪里?我检查了 无处可寻。 问题答案: 在Windows上,我可以在找到它。您可以在这里找到Java目录结构

  • 问题内容: 我想在系统上找到该定义,因此对于缺少该定义的系统,我可以实现它。在这里和其他站点上,我已经看到了各种定义,但是想在系统上检查确定的定义。 轻微的问题,因为我找不到_Bool的定义位置,甚至找不到stdbool.h 而对于上和不要么找到它。 那在哪呢 问题答案: 是内置类型,因此不要期望在头文件(甚至系统头文件)中找到它的定义。 话虽如此,从您要搜索的路径猜测您的系统,您是否进入过? 我

  • 问题内容: 我有以下两个表: 我想找到最专业的讲师。当我尝试此操作时,它不起作用: 但是当我尝试这样做时,它会起作用: 是什么原因?谢谢。 问题答案: 子句在 单行 上引入条件; 子句引入了 聚合 条件,即选择结果,其中已从 多个 行生成单个结果,例如计数,平均值,最小值,最大值或总和。您的查询需要第二种条件(即聚合条件),因此可以正常工作。 根据经验,请在之前和之后使用。这是一个比较原始的规则,