Java测试,如果两个void方法做同样的事情

问题描述 投票:0回答:1

我有一类配对的void方法:每个方法都有一个等效的方法,它应该以不同的方式执行相同的操作。例如:

public void example1_1(){
    Integer i = new Integer(1);
}

public void example1_2(){
    Integer i = Integer.valueOf(11);
}

要么

public void example2_1(){
    String result = "hello";
    for (int i = 0; i < 10; i++) {
        result += result;
    }
}

public void example2_2(){
    StringBuffer result = new StringBuffer("hello");
    for(int i = 0; i < 10; i++) {
        result += result;
    }
}

如何测试方法实际上在对中执行相同的操作?

java testing void
1个回答
0
投票

请注意,您没有任何返回值。这似乎是按计划进行的。

定义'做同样的方法'是非常困难的,你只考虑结果 - 如果是这样,为什么'无效'而不只是检查返回值?你的意思是表现明智吗?复杂明智吗?有很多级别的'相同' - 你可以要求的。

如果要验证某些方法在迭代中被调用N次,则可以使用Mockito验证方法 - 例如 - myMethod()仅被调用一次。

verify(myClass, times(1)).myMethod();

我强烈建议您使用返回值来验证结果是否相同。

在更广泛的方法中,人们可以争辩说OOP编程和接口方法的一部分具体是,只要它正确地执行,即只要方法返回,它与方法的作用并不重要。它应该是什么,内部实现是无关紧要的。您可以像我之前建议的那样使用单元测试来检查正确性,使用返回值和许多单元测试来验证各种输入的正确性

© www.soinside.com 2019 - 2024. All rights reserved.