在 JUnit
有没有一个地方可以定义要测试的方法应该如何流动?
我有一个名为 Location
的类(class)我已经为其编写了一个测试。除了 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);
}
}
最佳答案
简短回答:不,没有。
长答案:很确定这里已经提出了一个关于这个主题的问题。
一般来说,测试不应该维护测试之间的状态,因此如果您有一个依赖于 setter 测试的 getter 测试,那么您很可能会做错测试。
如果您想测试 getter 和 setter,请在一次测试中完成所有操作;即使用 getter 测试 setter,如果两个操作都成功,则 getter 和 setter 工作!
<小时/>为了回答您的问题,JUnit 必须提供与此相关的一项帮助,可以在此处找到:
https://github.com/junit-team/junit4/wiki/test-execution-order
简而言之,您对测试进行排序的选项是依赖JVM 指定的顺序,或方法名称的字典顺序。这些不会解决您的问题,因为您似乎想要一个非常具体的订单;即 set
-> get
关于java - JUnit 测试 getter 在 setter 之前调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52471485/