【问题标题】:JUnit - How to test a method with different values?JUnit - 如何测试具有不同值的方法?
【发布时间】:2011-08-13 05:39:51
【问题描述】:

我有一个方法并希望用不同的值对其进行测试。我的问题是:如何编写一个 JUnit 测试来测试具有不同值的相同方法?

【问题讨论】:

    标签: java unit-testing junit junit4


    【解决方案1】:

    您可以查看example 中的参数化测试。

    您也可以use theories,这在很多情况下更方便。

    【讨论】:

    • 理论似乎比参数化测试更清晰/更好,至少在实现上是这样。但是太糟糕了,JUnit 没有像 NUnit 的 [TestCase] 注释那样干净的东西,它可以让你指定每个测试方法。
    • 这是一篇关于参数化的好文章:How to Create JUnit Parameterized Tests
    【解决方案2】:

    我建议您为每个(重载)函数定义创建一个不同的单元测试,因为可以说您实际上是在测试不同的函数。例如:

    class MainClass {
    public void method( int param) {... }
    public void method( String param) { ...}
    }
    
    class MainClassTest {
    @Test
    public void methodIntTest() {
     //call method(int)
    }
    
    @Test
    public void methodStringTest() {
     //call method(String)
    }
    }
    

    【讨论】:

    • 如果 OP 想要的是两次调用具有不同参数的同一方法,这就是我阅读他的问题的方式。他说他有“方法”。当然,在这种情况下,您仍然可以编写不同的测试,以被测试的条件命名。
    • 好的,那我对这个问题的理解似乎是错误的。向这个频道上的所有人道歉,我认为他的意思是他的函数接受不同的参数(即重载)——因此上述解决方案。
    • 不需要道歉。我认为您的基本建议仍然有效,重新措辞以解决对同一方法具有不同值的一组调用的不同名称测试。
    • Liv 可能想删除这个答案,因为我们现在都同意它不能回答发帖者的问题(如果它允许你使用这么多的 cmets,我会发布这个而不是投票)
    • 对不起,我已经离线一段时间了——那么我们同意我需要删除答案吗?如果这是错误的,我不介意这样做——显然已经有一段时间了,想确保我在这里得到了正确的想法。谢谢。
    【解决方案3】:

    JUnit4 仅支持此目的的参数化测试。

    this tutorial

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-25
      • 1970-01-01
      • 2020-01-23
      • 1970-01-01
      • 2019-06-22
      • 1970-01-01
      • 1970-01-01
      • 2014-01-07
      相关资源
      最近更新 更多