/ / Тестування блоку у весняному mvc - пружина, блок-тестування, дао, шаблон спокою

Пристрій тестування навесні mvc - spring, unit-testing, dao, resttemplate

Якщо я хочу навесні перевірити свої уроки класів дао, я б просто зателефонувавши своїм методам обслуговування і випробував би їх, або ви перевірите методи обслуговування окремо від фактичних методів дао?

Також мені слід знущатися над дзвінками дао або фактично використовуватив базі даних пам'яті, як H2? Я бачу, що це більше тест на інтеграцію, хоча деякі підручники роблять це, чи стандартним підходом є тестування з макетом об'єктів бази даних для тестів служби та використання H2 при тестуванні дао-дзвінків?

Нарешті .. У моїй програмі є API відпочинку, який викликається з переднього веб-сторінки за допомогою шаблону Spring rest, і тому лише база веб-додатків API отримує доступ до бази даних.

Чи слід перевірити інші методи у кожному веб-додаткувикористовуючи знущаються об’єкти, а потім запустити тест екземпляра tomcat та інтеграцію між двома програмами? Якби я використовував tomcat і виконував інтеграційні тести між додатками, він би з'єднував базу даних або знущався з об’єктів у програмі API?

Тестування решти дзвінків із веб-програми справді покладається на те, як реагує метод відпочинку додатка API, чи це навіть варто перевірити ізольовано?

Я вважаю тестування блоків досить заплутаним, оскільки деякі з них, здається, майже є інтеграційним тестуванням.

Чи має значення, якщо ви запускаєте тести інтеграції проти H2 в пам'яті, але тоді насправді я б використовував MySQL?

Відповіді:

2 для відповіді № 1

Намагаючись відповісти на ваші запитання у запитаному порядку ...

Для одиничних методів тестування DAO слід випробувати тестфактичні класи DAO безпосередньо з базою даних у відомому стані. H2 чудово підходить для цього, оскільки ви можете запустити його, не встановлюючи MySQL для кожного тесту. Використання методів налаштування за допомогою @Before анотація чудово, щоб переконатися, що база даних реагуватиме очікуваними способами.

Під час тестування одиниць класів обслуговування ви повинні знущатисякласи DAO, щоб вони завжди поводилися очікуваними способами. Якщо ви використовуєте сервісні та DAO-класи з фактичними даними, ви зараз виконуєте тести інтеграції, тестуючи кілька шарів одночасно. Обидва мають свою цінність, хоча, як правило, найкраще провести тестування перед інтеграцією, щоб переконатися, що кожен компонент працює.

Те саме стосується тестування вашого контролера, вислід перевірити його і знущатися з класів обслуговування, а потім виконувати тести інтеграції з макетними запитами для тестування сценарії запитів / відповідей. Знову ж таки, завдяки цій тестовій установці ви зараз тестуєте багато шарів та класів одночасно. Це чудово, адже це дає вам гарне уявлення про те, як ваша програма буде функціонувати насправді, але не корисна для виділення помилок.

H2 і MySQL очевидно не однакові, іне поділяйте всі ті ж функціональні можливості, тож ви не можете сказати зі 100% впевненістю, що тест H2 пройде в MySQL, але якщо ви просто тестуєте стандартні операції CRUD, це повинно зробити трюк.