Java:不同参数顺序的测试方法

标签 java unit-testing testing

无论参数顺序如何,我都想正确验证一个方法。

因此,片段 1 和片段 2 都应该通过片段 3 中的测试用例。

(片段 1)

public Integer compute_speed(Integer distance, Integer time) {  
    return distance/time;
}

(片段 2)

public Integer compute_speed(Integer time, Integer distance) {  
    return distance/time;
}

您可以将这两个片段假设为两个学生提交的不同代码。并且你可以假设参数的数量可以大到 10。

在测试用例中,我这样写,

(片段 3)

 return compute_speed(3, 1).equals(3);

这验证了代码片段 1,但验证了代码片段 2。我怎样才能使这两个代码片段都通过测试用例?

要是有这样的东西就好了

return compute_speed(distance = 3, time = 1).equals(3);

提前致谢...

最佳答案

更简洁的方法是使用 Integer computeSpeed(Integer time, Integer distance); 方法创建接口(interface):

public interface DistanceCalculator {
    Integer computeSpeed(Integer distance, Integer time);
}

然后您要求学生实现它并调用他们的实现 StudentNameDistanceCalculator。例如,您将从学生那里收到以下类(class):

public class AssyliasDistanceCalculator implements DistanceCalculator {
    public Integer computeSpeed(Integer distance, Integer time) {  
        return distance / time;
    }
}

public class BobDistanceCalculator implements DistanceCalculator {
    public Integer computeSpeed(Integer distance, Integer time) {
        return distance / time * 2;
    }
}

然后您可以将他们所有的类加载到一个项目中并同时测试所有类。以 TestNg 为例:

@Test(dataProvider = "students")
public void testMethod(Class<?> clazz) throws Exception {
    DistanceCalculator dc = (DistanceCalculator) clazz.newInstance();
    assertEquals(dc.computeSpeed(3, 1), (Integer) 3, 
            clazz.getSimpleName().replace("DistanceCalculator", "") + " failed");
}

@DataProvider(name = "students")
public Object[][] dataProvider() {
    return new Object[][]{
        {AssyliasDistanceCalculator.class},
        {BobDistanceCalculator.class}};
}

你会得到一份关于谁没有通过测试的详细报告:

enter image description here

关于Java:不同参数顺序的测试方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21120003/

相关文章:

java - Selenium 将文本发送到密码字段

java - 如何从 Android studio 上的 textview 中删除单个元素

Java 类 - 不要等待进程退出

unit-testing - Go 单元测试 fatal error 并测试 main()

node.js - 将 Mocha 中的对象与 MongoDb 中的日期进行比较

java - 我该怎么做才能再次打印菜单选项?

unit-testing - 从单元测试调用插件功能

java - 用于在 Spring MVC 中进行基于注解验证的 bean 单元测试的良好模式

testing - Rails 3,测试方法太多?

typescript - 扩展 TestController/TestControllerPromise