当前位置: 首页 > 知识库问答 >
问题:

如何在JUnit中测试单独方法中的长方法?

龚俭
2023-03-14

我有一个很长的公共方法。它在逻辑上清楚地分为不同的部分。我能做的测试就是

@Test
public void shouldWork() {
    //Execute target method

    //This is a comment hinting that now the first step is verified
    //Verify first step

    //This is a comment hinting that now the second step is verified
    //Verify second step
}

我一点也不喜欢这样,因为它只会在这个巨大的方法中显示失败,如果任何一个单独的部分有错误。为每一步编写单独的测试方法似乎是合理的。那么我面临着以下情况:

@Test
public void testFirstStep() {
    //Execute target method
    //Verify first step
}

@Test
public void testSecondStep() {
    //Execute target method
    //Verify second step
}
@Test
public void testFirstStep() {
    //Execute target method
    executeVerificationsForFirstStep(myMock);
}

@Test
public void testSecondStep() {
    //Execute target method
    executeVerificationsForFirstStep(myMock);
    //Verify second step
}

private void executeVerificationsForFirstStep(Mock myMock) {
    //Verifications for first step on myMock
}

有什么建议吗?

共有1个答案

谢铭
2023-03-14

最好的方法是将方法分成几个子方法,并为每个子方法编写一个测试方法。最后,您可以测试调用子方法的主方法,以确保所有子方法都能很好地协同工作,这就像系统测试(集成测试)一样

 类似资料:
  • 问题内容: 我有一个类,它是JUnit测试类的JUnit套件。我想定义规则 的上 套件 之前,并运行每个单元测试后做一些数据库 ,如果 某个注释存在对测试方法。 我已经能够在套件和测试类中创建一个将在每个 类 之前执行此操作(这不够好),并且我已经能够使用测试类本身来定义测试规则,但这是重复性的而且看起来不是很干。 是否可以在套件中定义每个测试方法的规则,还是必须将它们添加到每个测试中? 编辑:

  • 问题内容: 我有一个测试类,其中包含几种典型的测试方法,这些方法可以进行断言或检查异常,并带有注释。它们在我在Ant任务中调用以下指令时运行: 但是,在同一堂课中,我想提出几种基准性能方法,这些方法未包含在必须通过的测试中。我想要一个完全独立的Ant任务来运行这些基准测试。 有没有注释的方法介绍这种测试分类并分别调用每个类别?例如,带注释的方法将是第一类,然后虚构的方法将仅记录用于诊断报告的性能指

  • 是否有一种带注释的方法来引入这种测试分类并分别调用每个类别?例如。注释方法将是第一类,然后虚构的方法将只是用于诊断报告的日志性能指标,而不是执行决定成败的断言。我认为测试类是定位这些基准测试方法的最佳方式,但我不知道如何在Ant中封装它们的调用,以便它们单独运行。例如,是否可以在每个方法前缀“benchmark”,并告诉Ant只运行前缀有该前缀的方法,或者我可以编写自己的注释?

  • 问题内容: 我有一个充满void方法的Java类,我想进行一些单元测试以获得最大的代码覆盖率。 例如我有这种方法: 它的名字不好用是因为我翻译了代码以更好地理解。每种方法均会验证参数是否在某种程度上有效并且编写正确。 范例: 我的单元测试很好地涵盖了小的方法,因为我要求它们检查ErrorFile是否包含错误消息,但是我看不到如何测试方法checkIfValidElements,它什么也不返回或什么

  • 问题内容: 我的测试类中的所有测试在执行每个测试之前都执行一个“ before”方法(用JUnit标记)。 我需要一个特殊的测试,以不执行此方法之前。 有办法吗? 问题答案: 不幸的是,您必须编写此逻辑。JUnit没有这种功能。通常,您有2个解决方案: 只需将测试用例与2个测试用例分开:一个包含需要“在运行前”运行的测试,另一个包含不需要的测试。 实施自己的测试运行并注释测试以使用它。创建自己的注

  • 我想测试某个异常是用作为JUnit测试方法的某个部分中的异常原因抛出的。 测试方法本身不应该抛出异常--只是它的一个特定部分。

  • 这与我自己的Runner和Filter类以及注释一起,意味着我可以在一个单独的类中运行一个单独的测试,如下所示: 这在Jenkins中也是非常好的,我也能够并行运行测试。我遇到的问题是,每个类的报告在每个方法运行后都会被覆盖。 例如,上面的命令将生成一个文件test-classwithtests.xml,其中包含关于TestMethod的结果和输出的信息。但是,如果我跑