Во-первых, вы решаете две проблемы - модульные тесты (часто в одном пакете с тестируемым модулем) и интеграционные тесты. Я обычно храню свои интеграционные тесты в отдельном пакете, что-то вроде com.example.project.tests. В затмении мои проекты выглядят так:
project/
src/
com.example.project/
tsrc/
com.example.project/
com.example.project.tests/
Щелчок правой кнопкой мыши по пакету и выбор «запустить» запускает тесты в пакете; выполнение того же действия с исходной папкой запускает все тесты.
Подобный эффект можно получить, хотя вы проявили к нему интерес, с помощью Suite runner . Однако это нарушает DRY - вы должны поддерживать копии имен тестов в актуальном состоянии в классах комплекта. Тем не менее, вы можете легко поставить один и тот же тест в нескольких комплектах.
@RunWith(Suite.class)
@Suite.SuiteClasses( {
TestAlpha.class,
TestBeta.class })
public class GreekLetterUnitTests {
}
Конечно, мне действительно нужно автоматизировать эти вещи. Хороший способ сделать это - использовать задачу Ant .
<target name="tests.unit">
<junit>
<batchtest>
<fileset dir="tsrc">
<include name="**/Test*.java"/>
<exclude name="**/tests/*.java"/>
</fileset>
</batchtest>
</junit>
</target>
<target name="tests.integration">
<junit>
<batchtest>
<fileset dir="tsrc">
<include name="**/tests/Test*.java"/>
</fileset>
</batchtest>
</junit>
</target>