【问题标题】:Java: Ways to test multiple static methods without repeating the test?Java:无需重复测试即可测试多个静态方法的方法?
【发布时间】:2020-10-27 01:43:10
【问题描述】:

我有一个类阶乘 里面有两个静态方法:

factorialImperative() & factorialRecursion,

有没有一种方法可以同时测试这两种方法,而不必对每种方法都重复测试?

我想看看有没有办法在不违反 DRY 原则的情况下做到这一点。

【问题讨论】:

  • 在 Spock 中这很容易,但在普通的 JUnit 中有点笨拙(并且报告更差)。提示:您需要使用功能界面。
  • 所以我确实尝试实现一个接口。基本上是一个包含两种方法测试的接口。然后是另一个实现接口的测试类,我被困住了。任何示例将不胜感激。

标签: java unit-testing static


【解决方案1】:

通常一个单元测试测试一个软件“单元”,通常是一种方法。这样做是为了在测试失败时快速隔离问题。 如果您的单元测试仅调用一种方法并且测试失败,那么问题显然出在该方法中。 如果您使用多种方法进行单元测试,那么在一般情况下,您需要深入调查以了解问题所在。更重要的是,如果游览测试有多个断言,因为您想检查多个方法的输出,那么如果第一个断言失败,那么所有其他断言甚至都不会执行。 举个例子

public void testFactorials() {
    Assert.assertEquals(6, factorialImperative(3));
    Assert.assertEquals(6, factorialRecursion(3));
}

如果上面的测试在第一个断言上失败,你将不知道第二种方法的正确性。

您可以尝试执行以下操作

public void testBoth() {
    Assert.assertEquals(factorialImperative(10), factorialRecursion(10));
}

但在这种情况下,如果两种方法都有整数溢出,你将无法捕捉到它。

【讨论】:

    猜你喜欢
    • 2014-01-05
    • 2022-12-17
    • 2022-07-31
    • 2017-07-04
    • 2011-10-24
    • 2015-05-26
    • 2019-05-11
    • 1970-01-01
    • 2012-07-20
    相关资源
    最近更新 更多