Тестирование всех классов, которые реализуют интерфейс в Java

Вы можете использовать $ expr (оператор версии 3.6 mongo) для использования функций агрегации в регулярном запросе.

Сравнить query operators vs aggregation comparison operators .

db.accommodations.find({$expr:{$gt:[{$size:"$name"}, 1]}})

7
задан bhollis 20 September 2008 в 20:11
поделиться

4 ответа

На основе Вашего последнего абзаца, что Вы пытаетесь сделать, вводят некоторые 'дополнительные методы' в поблочное тестирование, так как Вы уже тестируете определенный класс. Я не знаю о ремне безопасности тестирования, который позволяет Вам присоединять тесты на основе иерархии класса.

Однако с Вашим собственным предложением использования TestNG для создания чего-то подобного, я думаю, что Вы могли бы быть очень близкими. Вы могли очень хорошо включить некоторый основной код, который добавляет Ваш класс к списку 'тестовых классов по умолчанию', которые в свою очередь тестируются, если они реализуют определенный интерфейс.

Однако, относительно общего случая я думаю, что Вам не повезло, так как система типов Java является односторонней, можно только (легко) узнать то, что соединяет интерфейсом с классом реализации, не наоборот. Кроме того, проблема, 'где прекратить смотреть': если у Вас есть тест, который проверяет все Ваш comparable реализаторы, сделайте Вы хотите, чтобы это проверило законность Stringодин также, так как это находится в Вашей среде Java?

1
ответ дан 7 December 2019 в 18:46
поделиться

В.NET было бы довольно просто настроить метод, который просматривает блок и определяет иерархию наследования/реализации каждого класса. Я уверен, что Вы могли сделать это в Java также при исследовании API Reflection Java.

Вы могли затем создать массив ITargetInterfaces и вызов метод тестирования для каждого.

0
ответ дан 7 December 2019 в 18:46
поделиться

Один путь состоял бы в том, чтобы перерыть файл банки для всех .class файлов (или перерыть каталог классов), используйте Class.forName () метод, чтобы загрузить файл класса и проверить MyInterface.class.isAssignableFrom(myClass).

Это не имело бы дело легко общедоступные внутренние статические классы (Вы могли проанализировать имя файла класса), но никогда не будет работать с частными внутренними классами или анонимными внутренними классами.

0
ответ дан 7 December 2019 в 18:46
поделиться
1
ответ дан 7 December 2019 в 18:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: