我如何单元测试比较()方法,比较2个对象?

时间:2013-08-07 15:26:04

标签: java testing junit

尝试使用3种方案测试以下方法。 如果2个对象相等,则返回zer0,如果“this”大于其他对象返回正数,则返回负数。

我是否为3个案例写了3个不同的测试?或者我可以用一种测试方法完成所有操作吗? 感谢

public int compareTo(Vehicle v){

        if(this.getLengthInFeet() == ((Boat)v).getLengthInFeet()){
            return 0;
        }else if(this.getLengthInFeet() > ((Boat)v).getLengthInFeet()){
            return 10;
        }else{
            return -10;
        }

}

1 个答案:

答案 0 :(得分:2)

看看@Parameterized。这将为您提供具有多个数据点的测试方法。以下是一个示例(未经测试):

@RunWith(Parameterized.class)
public class XxxTest {
    @Parameters
    public static Iterable<Object[]> data() {
        return Arrays.asList(new Object[][] {
           { 0, 10, 10 },
           { -10, 10, 20 },
        });
    }

    private final int expected;
    private final int thisFeet;
    private final int vFeet;

    public XxxTest(int expected, int thisFeet, int vFeet) {
        this.expected = expected;
        this.thisFeet = thisFeet;
        this.vFeet = vFeet;
    }

    @Test
    public void test() {
        Vehicle vThis = new Vehicle(thisFeet);
        Vehicle vThat = new Vehicle(vFeet);

        assertEquals(expected, vThis.compareTo(vThat));
    }

}