Java: test methods for various orders of parameters

I want to check the method correctly regardless of the order of the parameters.

Therefore, fragments 1 and 2 must pass the test case in fragment 3.

(fragment 1)

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

(fragment 2)

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

You can consider two fragments as different representations of the code by two students. And you can assume that the number of parameters may be more than 10.

In a test case, I wrote

(fragment 3)

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

This checks for fragment 1, but fails for 2. How can I make both fragments pass a test case?

If there was something like

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

Thanks in advance...

0
source share
2 answers

An easier way would be to create an interface using the method Integer computeSpeed(Integer time, Integer distance);:

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

StudentNameDistanceCalculator. , :

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

+1

, . , a/b b/a.

, 1 2 , , . Java , , ?

. , .

Java , , , PL/SQL :

speed := compute_speed(distance => 3, time => 1);

UPDATE

, :

assertTrue(compute_speed(3, 1).equals(3) || compute_speed(1, 3).equals(3));

.

+1

All Articles