Содержание
- 2. Что такое Unit-тест и с чем его едят Фрагмент кода, написанный разработчиком, для проверки очень маленького,
- 3. Зачем нужно возиться с тестами они делают жизнь проще они делают дизайн приложения лучше они значительно
- 4. Чего мы добиваемся написанием тестов Ответов на вопросы: Делает ли код то, что ожидает от него
- 5. Как писать юнит-тесты Ответить на вопрос: как мы будем тестировать новый метод. Написать тест и тестируемый
- 6. Типичные отговорки Написание тестов занимает слишком много времени Запуск тестов занимает слишком много времени Это не
- 7. Как исправлять баги Идентифицировать баг Написать тест, который «поломается» от этого бага, чтобы подтвердить наличие бага.
- 8. Red-Green-Refactor
- 9. JUnit Библиотека (фреймворк) для модульного тестирования программного обеспечения на языке Java.
- 10. JUnit API: Assertion (Утверждения) assertEquals assertFalse assertTrue assertNotNull assertNull assertNotSame assertSame
- 11. Junit API: Annotations @Test @Before @After @Ignore
- 12. JUnit Example: Class under test public class User { private String name; public User(String name) {
- 13. Junit Example: Test class public class UserTest { @Test public final void testIsNameSake() { User user1
- 14. Легко? Всё меняется, когда приходят ОНИ
- 15. Внешние зависимости Внешняя зависимость — это объект, с которым взаимодействует код и над которым нет прямого
- 16. Внешняя зависимость от БД public class User { private static final UserDAO userDAO = new UserDAO();
- 17. Виды тестовых объектов dummy stub spy mock fake
- 18. Dummy (Пустышка) Объект, который обычно передается в тестируемый класс в качестве параметра, но не имеет поведения,
- 19. Stub (Заглушка) Используется для получения данных из внешней зависимости, подменяя её. При этом игнорирует все данные,
- 20. Spy (Шпион) Используется для тестов взаимодействия, основной функцией является запись данных и вызовов, поступающих из тестируемого
- 21. Mock Очень похож на spy, однако не записывает последовательность вызовов с переданными параметрами для последующей проверки,
- 22. Fake Используется в основном чтобы запускать (незапускаемые) тесты (быстрее) и ускорения их работы. Эдакая замена тяжеловесного
- 23. Stubs vs Mocks
- 24. “Ручные” “моки” и “стабы”
- 25. Stub public class UserStub extends User { private String name; public UserStub(String name) { super(null); this.name
- 26. Stub: Test case public class UserTest { @Test public final void testManualStub() { User user1 =
- 27. Mock public class UserMock extends User { private UserDAO userDAO; public UserMock(Integer id, UserDAO userDAO) {
- 28. Stub for Mock public class UserDAOStub extends UserDAO { @Override public String getName(Integer id) { switch(id)
- 29. Mock with Stub: Test case public class UserTest { @Test public final void testManualMock() { UserDAO
- 30. Слишком сложно? Отведайте mockito! import static org.mockito.Mockito.*;
- 31. Mockito: stubbing public class UserTest { @Test public final void testMockitoStub() { User user1 = mock(User.class);
- 32. Mockito: mocking public class UserTest { @Test public final void testMockitoMock1() { User user1 = mock(User.class);
- 33. Mockito: spying & stubbing public class UserTest { @Test public final void testIsMockitoMock2() { UserDAO userDAOStub
- 34. Mockito: spying public class UserTest { @Test public final void testMockitoSpy() { UserDAO userDAOStub = mock(UserDAO.class);
- 35. Подведём итоги Тестируйте все, что может сломаться Тестируйте все, что уже сломалось Новый код признается виновным,
- 37. Скачать презентацию