jUnit: как отфильтровать тесты, найденные в нескольких пакетах - PullRequest
2 голосов
/ 18 мая 2011

Когда jUnit запускает набор тестов, содержащий несколько «вспомогательных наборов», возможно ли отфильтровать тесты, найденные в различных наборах, чтобы они выполнялись только один раз ? Я работаю над проектом со многими тестами интеграции баз данных, поэтому желательно выполнить их только один раз, чтобы ускорить его.

Рассмотрим этот "основной набор":

@RunWith(Suite.class)
@SuiteClasses
({
    ModuleASuite.class,
    ModuleBSuite.class,
    // More suites...
})
public class MainSuite
{}

И эти «суб-сюиты»:

@RunWith(Suite.class)
@SuiteClasses
({
    TestA1.class,
    TestA2.class,
    //... More tests only related to ModuleA

    SomeTestUsedByManyModules.class
})
public class ModuleASuite
{}

@RunWith(Suite.class)
@SuiteClasses
({
    TestB1.class,
    TestB2.class,
    //... More tests only related to ModuleB

    SomeTestUsedByManyModules.class
})
public class ModuleBSuite
{}

В настоящее время при запуске MainSuite с использованием jUnit 4.4 (с использованием Eclipse или Ant) он запускает SomeTestUsedByManyModules дважды. Как я могу заставить его работать только один раз? Я думал о создании собственного Runner , но, может быть, есть более простое решение для этого?

1 Ответ

1 голос
/ 18 мая 2011

Я не знаю, как это сделать с @RunWith (Suite), но как насчет другого подхода? ClassPathSuite позволяет вам предоставить шаблоны имен тестов, чтобы избежать необходимости перечислять их все вручную.

...