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

}

person Some Body    schedule 24.09.2018    source источник
comment
О боже, не делай этого. Проверьте требуемое поведение вашего класса. Не пишите тест для каждого отдельного метода. И, честно говоря, написание тестов для геттеров и сеттеров - не лучшее использование вашего времени.   -  person Dawood ibn Kareem    schedule 24.09.2018
comment
@DawoodibnKareem, я на 100% согласен с последним пунктом, особенно когда у нас есть такие вещи, как _ 1_, разработанный специально для устранения необходимости писать все избыточные классы значений   -  person smac89    schedule 25.09.2018


Ответы (1)


Краткий ответ: нет.

Длинный ответ: почти уверен, что здесь, в SO, уже есть вопрос по этой теме.

В общем, тесты не должны сохранять состояние от теста к тесту, поэтому, если у вас есть геттер-тест, который зависит от сеттера-теста, скорее всего, вы выполняете тест неправильно.

Если вы хотите протестировать геттеры и сеттеры, сделайте все за один тест; т. е. Протестируйте установщик с помощью получателя, и если обе операции выполнены успешно, то получатель и установщик работают!


Чтобы ответить на ваш вопрос, есть одна помощь, которую JUnit может предложить в этом отношении, и она находится здесь:

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

Короче говоря, вы можете упорядочить тесты в зависимости от порядка, установленного JVM, или лексикографического порядка имен методов. Это не решит вашу проблему, потому что вам, кажется, нужен очень конкретный заказ; т.е. set -> get

person smac89    schedule 24.09.2018