Значна частина цієї маси тестів призначена для реалізації колекції Guava. Вони написали загальні тести, які вичерпно перевіряють інтерфейси колекції, і це генерує набір на реалізацію. Дивіться, наприклад, класи , які називаються CollectionAddAllTester
, ListIndexOfTester
.
Це все підкріплене бібліотекою під назвою testlib, яка постачається у складі Гуави. Це досить загальне. Він підтримує написання загальних тестів для будь-якого інтерфейсу (не лише колекцій). Ви можете вказати Feature
s можливих реалізацій та протестувати їх (наприклад, якщо ваш набір неможливо змінити, ви очікуєте іншого результату set.add()
), а під час запуску тестів ви вкажете, які функції підтримує ваша реалізація.
Він заснований на JUnit 3, а не на 4. Як правило, у вас є клас, розширений TestCase
з методами, іменованими testSomething()
, і JUnit запускає їх рефлекторно. Бібліотека testlib підключається до виконання цих тестів, щоб життєвий цикл виглядав так:
- Для кожної реалізації, яку ви хочете протестувати
- Для кожного (застосовного) методу випробувань
- Створіть
TestCase
примірник
- Ініціалізація
TestSubjectGenerator
- це інтерфейс testlib, який ви розширюєте там, де ви фактично створюєте тест
- Рефлексивно запустити метод тесту. Під час цього методу
getSubjectGenerator()
надається доступ випробуваному
Ключовим бітом є додатковий етап ініціалізації, який дозволяє їм вводити конкретний суб'єкт тесту в загальний тестовий зразок.
Я написав пост про те, як написати тестові генерації наборів для власних інтерфейсів.
(Також розміщено з тим же запитом на сайті sqa .)