2012-05-25 4 views
1

У меня есть классы Spring Test (определенные с использованием @RunWith(SpringJUnit4ClassRunner)), которые я хочу сгруппировать в тестовых наборах, чтобы загружать новые конфигурации один раз для каждого набора, а не для каждого теста класс.Как прослушивать изменения в тестовом наборе для изменения некоторых конфигураций

Прямо сейчас у меня есть прослушиватель TestExecutionListener для каждого теста Spring, который перезагрузит конфигурации, но я хочу сохранить это, поскольку многие тесты используют одни и те же конфигурации.

К сожалению, niether Spring поддерживает прослушивание JUnit TestSuite s и JUnit поддерживает концепцию слушателя для TestSuite s.

ответ

2

Если вы хотите выполнить действия до/после набора тестов junit, вы можете использовать @BeforeClass и @AfterClass, или даже @ClassRule. Вы можете сделать свою установку там для всего пакета. Используя следующий пример:

@RunWith(Suite.class) 
@SuiteClasses({ ExpectedFailureTest.class, RetryTest.class }) 
public class BeforeClassSuite { 
    @BeforeClass 
    public static void beforeClass() { 
    System.out.println("beforeClass"); 
    } 

    @AfterClass 
    public static void afterClass() { 
    System.out.println("afterClass"); 
    } 

    @ClassRule 
    public static ExternalResource resource = new ExternalResource() { 
    @Override 
    protected void before() throws Throwable { 
     System.out.println("before"); 
    }; 

    @Override 
    protected void after() { 
     System.out.println("after"); 
    }; 
    }; 
} 

Это производит в качестве выходного сигнала:

before 
beforeClass 
... output from tests 
afterClass 
after