Сборка Ant - инструментарий кода Emma - для тестов JUnit нужны интерфейсы, Emma не использует их - PullRequest
4 голосов
/ 02 июля 2010

У меня есть файл сборки Ant, в котором я компилирую исходный код Java приложения и тестов, инструментирую классы приложения, запускаю тесты JUnit и генерирую отчеты о покрытии кода JUnit и Emma.Задаче JUnit дается путь к инструментированным классам.

Проблема в том, что интерфейсы не инструментированы ( Emma FAQ ), но я использую их в тестах, а JUnit не может найтиих.

Я могу подумать о 2 решениях:

  • не использовать интерфейсы в тестах (идет вразрез с программированием интерфейсов - считается ли это в тестах?)
  • copyинтерфейсы рядом с инструментированными классами (жесткое кодирование пути к интерфейсам)

Как мне подойти и решить эту проблему?

1 Ответ

4 голосов
/ 02 июля 2010

Мне кажется, что вы говорите, что у JUnit возникли проблемы, потому что интерфейсы не находятся на пути к классам?

Обычным ответом будет поместить их туда.

Быстрый и грязный ответ мог бы заключаться в том, чтобы поместить путь к классам для неинструментированных классов в путь к классу juint ПОСЛЕ пути к инструментированным классам.Загрузчик классов должен использовать первое найденное совпадение, поэтому инструментальные реализации будут использованы вместо неинструментированных реализаций, но интерфейсы все равно будут доступны.

Если это решит вашу проблему, вы можете захотетьзамените быструю и грязную на что-то более надежное, например, сделав интерфейсы доступными в jar, отдельном от реализации.

...