java - JUnit 测试 getter 在 setter 之前调用

标签 java junit

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/

相关文章:

java - 从 Eclipse 中的项目中删除 Apache TomCat 运行时?

java - IntelliJ + JUnit 5(木星)

Java通用对象状态比较

java - 您能否在不显式列出它们的情况下从命令行运行包中的所有 JUnit 测试?

java - Spring 测试 - 注入(inject)具有嵌套 bean 依赖项的模拟 bean

java - 对于接受类似类型的输入参数、相同的实现代码但不同的输出的测试用例,正确的实现是什么

java - 使用仅适用于第一次测试的流进行单元测试日志

java - 用于确认可接受输入的正则表达式

java - For Each 循环和 For 循环 Java

java - 如何在命令行中设置JVM字符集?