Тестирование бобов весной - PullRequest
       1

Тестирование бобов весной

3 голосов
/ 31 августа 2011

У меня есть три класса бобов, A, B и C.

Класс A зависит от свойств класса B и класса C.

Как мне написать контрольный пример Junit для тестирования класса A без загрузки классов B и C?

Я знаю, что этот вопрос многословен, если у кого-то есть идеи, пожалуйста, дайте несколько советов.

С уважением, Раджу коматури

1 Ответ

5 голосов
/ 31 августа 2011

Используйте фальшивый фреймворк, такой как EasyMock или Mockito , и вводите фиктивные версии B и C.

Вы, вероятно, должны делать это полностью без Spring, просто вставьте Mocks программно.

Пример:

// Three Interfaces:
public interface FooService{
    String foo(String input);
}
public interface BarService{
    String bar(String input);
}
public interface BazService{
    String baz(String input);
}

// Implementation for FooService that uses the other two interfaces
public class FooServiceImpl implements FooService{
    public void setBarService(BarService barService){
        this.barService = barService;
    }
    private BarService barService;
    public void setBazService(BazService bazService){
        this.bazService = bazService;
    }
    private BazService bazService;
    @Override
    public String foo(String input){
        return barService.bar(input)+bazService.baz(input);
    }
}

// And now here's a test for the service implementation with injected mocks
// that do what we tell them to
public class FooServiceImplTest{

    @Test
    public void testFoo(){
        final FooServiceImpl fsi = new FooServiceImpl();

        final BarService barService = EasyMock.createMock(BarService.class);
        EasyMock.expect(barService.bar("foo")).andReturn("bar");
        fsi.setBarService(barService);

        final BazService bazService = EasyMock.createMock(BazService.class);
        EasyMock.expect(bazService.baz("foo")).andReturn("baz");
        fsi.setBazService(bazService);

        EasyMock.replay(barService, bazService);

        assertEquals(fsi.foo("foo"), "barbaz");
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...