Юнитилс нарушает стандартное поведение EasyMock?

В проекте на работе я наткнулся на настоящую досадную ошибку / особенность. Я нашел решение, однако мне действительно любопытно, почему это происходит. Все это связано с тем, что в проекте есть несколько устаревших тестов, написанных с использованием unitils вместо простого старого EasyMock. Подумайте о том, чтобы следующие два тестовых класса проходили в порядке сразу за каждым

public class Test1{

    @TestedObject
    private MyService myService;    

    @InjectIntoByType protected Mock<MyRepository> myRepo;

    @Test
    public void aTest(){

        myService.doSomething();
        myRepo.assertNotInvoked().getById(EasyMock.anyLong());
    }               
}

public class Test2{
    private IMocksControl control;
    private MyOtherService myService;
    private MyOtherRepo myRepo;

    public Test2(){
        control = EasyMock.createControl();
        myRepo = control.createMock(MyOtherRepo.class);
        myService = new MyOtherService(myRepo);
    }

    @Test
    public void aTest(){
        myRepo.getById(5L);
        EasyMock.expectLastCall().andReturn(new MyObject(5L));

        control.replay()
            MyObject result = myService.doSomething();
        control.verify()
        Assert.assertEquals(5L,result.getId().longValue);
    }
}

Когда я запускаю оба теста по отдельности, они работают нормально. Оба зеленые, оба рабочие. Однако, если я запускаю их сразу после каждого, второй тест завершается неудачно с java.lang.IllegalStateException: ожидаемые совпадения x, y записанная ошибка (x и y - это, конечно, целые числа, так как это ложный пример, у меня нет действительных чисел).

Я "исправил" это, изменив строку assertNotInvoked на: myRepo.assertNotInvoked (). GetById (null);

Это, конечно, не совсем исправление, я просто обошел использование matchers, и мне интересно, если бы я не сломал старый тестовый пример с ним... Есть ли кто-нибудь с достаточным опытом EasyMock + Unitils, который мог бы помочь мне понять этот? Мое лучшее "предположение" состоит в том, что AssertNotInvoked не заканчивается должным образом блоком EasyMock.replay(), EasyMock.verify()... но я могу ошибаться.

0 ответов

Другие вопросы по тегам