тестирование сервисного уровня в mvc весной с помощью easymock - PullRequest
7 голосов
/ 18 марта 2011

Сервисный интерфейс:

public List<UserAccount> getUserAccounts();
public List<UserAccount> getUserAccounts(ResultsetOptions resultsetOptions, List<SortOption> sortOptions);

Реализация услуги:

public List<UserAccount> getUserAccounts() {
    return getUserAccounts(null, null);
}
public List<UserAccount> getUserAccounts(ResultsetOptions resultsetOptions, List<SortOption> sortOptions) {
    return getUserAccountDAO().getUserAccounts(resultsetOptions, sortOptions);
}

Как я могу проверить это, используя easymock или любую другую жизнеспособную методологию тестирования? Пример кода будет оценен. Для легкого макета передачи объектов в качестве параметров очень запутанно. Кто-то четко объяснит, каков наилучший подход для тестирования уровня обслуживания? Тестирование интерфейса сервиса будет считаться юнит-тестом или интеграционным тестом?

1 Ответ

4 голосов
/ 22 марта 2011

Итак, если вы используете JUnit 4 с аннотациями:

import static org.easymock.EasyMock.createStrictMock;
import static org.easymock.EasyMock.expect;
import static org.easymock.EasyMock.replay;
import static org.easymock.EasyMock.verify;

public class UserAccountServiceTest 

     private UserAccountServiceImpl service;
     private UserAccountDAO mockDao;

     /**
     * setUp overrides the default, We will use it to instantiate our required
     * objects so that we get a clean copy for each test.
     */
     @Before
     public void setUp() {
          service = new UserAccountServiceImpl();
          mockDao = createStrictMock(UserAccountDAO.class);
          service.setUserAccountDAO(mockDao);
     }

    /**
     * This method will test the "rosy" scenario of passing a valid
     * arguments and retrieveing the useraccounts.  
     */
     @Test
     public void testGetUserAccounts() {

          // fill in the values that you may want to return as results
          List<UserAccount> results = new User(); 

          /* You may decide to pass the real objects for ResultsetOptions & SortOptions */
          expect(mockDao.getUserAccounts(null, null)
               .andReturn(results);

          replay(mockDao);
          assertNotNull(service.getUserAccounts(null, null));
          verify(mockDao);
     }

}

Вы также можете найти эту статью полезной, особенно если вы используете JUnit 3.

См. Это для быстрой помощи по JUnit 4.

Надеюсь, что поможет.

...