JUnit测试在setter之前调用getter

时间:2018-09-24 00:37:54

标签: java junit

JUnit中,有一个地方可以定义应如何测试的方法?

我有一个名为Location的类,已经为此做了测试。所有测试均通过testGetName之前被调用的testSetName

这会使测试失败。我该如何解决?

public class LocationTest {

    Location instance;

    @Before
    public void setUp() {
        instance = new Location();
    }              

    @Test
    public void testGetLongitude() {
        System.out.println("getLongitude");
        double expResult = 0.0;
        double result = instance.getLongitude();
        assertEquals(expResult, result, 0.0);
    }    

    @Test
    public void testSetLongitude() {
        System.out.println("setLongitude");
        double longitude = 0.0;
        instance.setLongitude(longitude);
    }    

    @Test
    public void testSetName() {
        System.out.println("setName");
        String name = "";
        instance.setName(name);
    }

    /**
     * Test of getName method, of class Location.
     */
    @Test
    public void testGetName() {
        System.out.println("getName");
               String expResult = "Mock Location";
        String result = instance.getName();
        assertEquals(expResult, result);
    }

}

1 个答案:

答案 0 :(得分:3)

简短的回答:没有。

长答案:很确定这里已经有一个关于此主题的问题。

通常,测试不应保持测试之间的状态,因此,如果您有依赖于setter测试的吸气剂测试,则可能是您做错了测试。

如果要测试吸气剂和吸气剂,请一次完成所有测试;即通过使用getter测试设置器,如果两项操作均成功,则getter和setter可以正常工作!


要回答您的问题,JUnit对此提供了一种帮助,可以在这里找到:

https://github.com/junit-team/junit4/wiki/test-execution-order

简而言之,您需要对测试进行排序的选项是依赖于 JVM指定的顺序,还是方法名称的按字典顺序排序。这些并不能解决您的问题,因为您似乎想要一个非常特定的订单。即set-> get