Я знаю, что это основной вопрос, но из-за недостатка моих знаний я не мог начать писать тест для своего приложения. Поэтому здесь я пытаюсь изучить и понять, что тестировать и как тестировать на основе моего сценария приложения.Какой тест написать?
Class MyController {
MyService service = new MyService();
List<String> myList = service.generateSomeList(keyVal);
model.add("myList", myList);
}
Class MyService {
ThirdPatryService extService = new ThirdPatryService();
MyDao dao = new MyDao();
public List<String> generateSomeList(Long key) {
List<String> resultList = dao.fetchMyList(key);
extService.processData(resultList); //using 3rd party service to process result. It doesn't return anything.
return formattedList(resultList);
}
private List<String> formattedList(List<String> listToProcess) {
//do some formatting
}
}
Class MyDao {
List<String> fetchMyList(key) {
//Use DB connection to run sql and return result
}
}
Я хочу провести как тестирование модулей, так и интеграционное тестирование. Поэтому некоторые из моих вопросов:
- Должен ли я выполнять модульное тестирование для MyDao? Я так не думаю, так как я могу проверить результат запроса, тестируя уровень сервиса.
- Каковы возможные тестовые примеры для уровня обслуживания? Я могу придумать результат теста из db и функцию форматирования теста. Любой другой тест, который я пропустил?
При тестировании метода generateSomeList() это ОК, чтобы создать фиктивный список строк и проверить его на результат? Как и код ниже Я сам создаю список и тестирую себя. Это правильный/правильный способ написать тест?
@Test public void generateSomeListTest() { //Step 1: Create dummy string list e.g. dummyList =["test1", "test2", "test3"] //Step 2: when(mydao.fetchMyList(anyLong()).thenReturn(dummyList); //Step 4: result=service.generateSomelist(123L); //Step 5: assertEquals(result[i], dummyList[i]); }
- Я не думаю, что мне нужно протестировать стороннее обслуживание, но я думаю, что должен убедиться, что он вызван. Это верно? Если да, то как я могу это сделать с Mockito?
- Как убедиться, что служба thirdparty действительно обработала мои данные. Поскольку его тип возврата недействителен, как я могу выполнить тест, он действительно выполнил свою работу, например, как отправить письмо.
- Должен ли я писать тест для контроллера, или я могу просто написать интеграционный тест.
Я очень благодарен, если бы вы могли ответить на этот вопрос, чтобы понять часть тестирования для приложения.
Спасибо.
Спасибо .. это действительно поможет мне начать. У моего кода есть DI, я просто использую новое ключевое слово, например. –
+1 для инъекции зависимостей –
@ user4035943 вот хороший пример для начала: http://alexandretricks.wordpress.com/2012/05/23/ninject-dependency-injection-and-inversion-of-control/ –