JUnit tests getter 在 setter 之前调用



JUnit中,是否有一个地方可以定义要测试的方法应该如何流动?

我有一个名为Location的类,我已经为它编写了一个测试。除在testSetName之前调用的testGetName外,所有测试都通过。

它使测试失败。我该如何解决这个问题?

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);
}
}

简短的回答:不,没有。

长答案:很确定在SO上已经提出了一个关于这个主题的问题。

通常,测试不应在测试之间保持状态,因此,如果您的 getter 测试依赖于二传手测试,则很可能您做错了测试。

如果你想测试吸气手和二传手,在一次测试中完成所有操作;即使用吸气器测试二传手,如果两个操作都成功,那么吸气手和二传手就可以工作了!


为了回答您的问题,JUnit必须为此提供一种帮助,可以在此处找到:

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

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

最新更新