Я пытаюсь настроить скрипт сборки ANT, который компилирует код, компилирует тесты, запускает юнит-тесты и затем строит.Все это делается через отдельные цели с зависимостями, т.е.
<target name="compile">
<javac>...
</target>
<target name="compile-tests" depends="compile">
<javac>...
</target>
<target name="unittest" depends="compile-tests">
<junit...
<test ...
<fail if="tests.failed" ..
</target>
<target name="build" depends="compile, unittest">
</target>
Каждый «тест» в задаче «junit» фокусируется на одной части приложения (обычно пакет за пакетом) и указывает на Junit TestSuite.Эта настройка позволяет запускать все тесты при вызове сборки, но это не идеально для повседневной разработки.
Я хотел бы иметь возможность сделать 2 вещи:
- Запустить все тесты в сборке (как показано выше)
- Запустить тесты отдельно от ant
Моим решением для (2) было использование нескольких antcallзадачи, которые на самом деле не лучшая практика.Во время этих вызовов были установлены разные свойства для запуска всех тестов, поскольку для каждого требовалось отдельное свойство:
<!-- test package p2 with ant unittest -Dtest.p2=true -->
<target name="unittest" depends="compile-tests">
<junit...
<test if="test.p1" ...
<test if="test.p2"
<fail if="tests.failed" ..
</target>
<target name="unittestall">
<property name="test.p1" value="true"/>
...
</target>
<target name="build" depends="compile, unittest">
<antcall target="unittestall" />
<antcall target="clean" />
<antcall target="compile" />
</target>
Это дало необходимую мне степень детализации, но означало, что большая часть работы была дублирована, а функции зависимости ant не использовалисьЯ использовал их полностью.
Итак, мой вопрос: как мне лучше настроить ANT и Junit, чтобы все тесты можно было запускать как часть сборки И так, чтобы можно было запускать отдельные тесты?
Спасибо:)
от Джошуа Англии
PS ANT 1.8 и Junit 4.10:)