В Гуаве автоматически создаются тестовые случаи :
В Гуаве огромное количество модульных тестов: по состоянию на июль 2012 года пакет guava-tests включает более 286 000 отдельных тестовых случаев. Большинство из них генерируются автоматически , а не пишутся от руки, но тестовое покрытие Guava очень тщательно, особенно для com.google.common.collect.
Как они сформировались? Какие методы и технологии были использованы для разработки и создания их?
java
unit-testing
test-automation
dzieciou
источник
источник
Ответы:
Большая часть этой массы тестов предназначена для реализации коллекций Guava. Они написали общие тесты, которые всесторонне тестируют интерфейсы коллекции, и это генерирует набор для реализации. Смотрите, например, классы , называемых
CollectionAddAllTester
,ListIndexOfTester
.Все это поддерживается библиотекой testlib, которая поставляется как часть Guava. Это довольно общее. Он поддерживает написание общих тестов для любого интерфейса (не только коллекции). Вы можете указать
Feature
s возможных реализаций и протестировать их (например, если ваш набор немодифицируем, вы ожидаете другого результатаset.add()
), и при запуске тестов вы указываете, какие функции поддерживает ваша реализация.Он основан на JUnit 3, а не 4. Обычно у вас есть класс, расширяющий
TestCase
полный набор именованных методовtestSomething()
, и JUnit выполняет их рефлексивно. Библиотека testlib подключается к выполнению этих тестов, поэтому жизненный цикл выглядит следующим образом:TestCase
экземплярTestSubjectGenerator
- это интерфейс testlib, который вы расширяете, где вы фактически создаете объект тестированияgetSubjectGenerator()
дает доступ к испытуемомуКлючевой бит является дополнительным этапом инициализации, который позволяет им вводить конкретного тестируемого в общий тестовый пример.
Я написал пост о том, как написать testlib, генерирующий наборы для ваших собственных интерфейсов.
(Также опубликовано на тот же вопрос на сайте sqa .)
источник
Есть генераторы модульных тестов. Например, в мире .NET что-то вроде Microsoft Pex может сделать это.
Например, Microsoft Pex на основе анализа кода пытается использовать все возможные значения в качестве аргументов для метода. Ожидается, что некоторые аргументы позволят методу генерировать исключение. Такие вещи могут автоматически тесты, созданные для. Статические значения, такие как пустая строка, которая возвращается в определенных случаях, также могут быть автоматически проверены.
источник