2014-01-20 25 views
0

我已阅读了很多关于此主题的建议,但似乎没有一个可行。 当前应用程序上下文是为每个测试类创建的,但是我希望它只创建一次并被所有测试类使用。jUnit测试中的单个Spring上下文

这是我的测试套件设置:

@RunWith(ClasspathSuite.class) 
@ClassnameFilters({"org.*", ".*Test"}) 
public class AllTests { 
} 

这是我与上下文设置抽象类。所有的测试课都在扩展这个课程。

@TestExecutionListeners({DependencyInjectionTestExecutionListener.class}) 
@ContextConfiguration(classes = {ServiceInitializer.Config.class}) 
@DirtiesContext 
public abstract class ServiceInitializer extends AbstractJUnit4SpringContextTests { 

@Configuration 
@Import({TestConfig.class, SpringClientConfig.class}) 
public static class Config { 
    @Bean 
    public ContactsClient contactsClient(ContactsService contactsService) { 
     return new ContactsClientFactory().createInstance(contactsService);   
    } 
} 

@Autowired 
protected ContactsClient contactsService; 

... 

@Autowired 
protected ApplicationContext appContext; 


@BeforeClass 
public static void setUpBeforeClass() throws Exception { 
    initializeDB(); 
    initializeApplicationServiceProperties(); 
    dbInit = false; 
} 

protected static void initializeDB() throws Exception { 
    ... database settings ... 

    dropSQLTestDatabase(dbName, jdbcProperties); 
    dropTestDatabase(); 
} 

protected static void initializeApplicationServiceProperties() throws IOException { 

    System.setProperty("log4j.config.file", ServiceInitializer.class.getClassLoader().getResource("log4j-test.xml").getFile()); 
    System.setProperty("app.config.file", ServiceInitializer.class.getClassLoader().getResource("test.properties").getFile()); 

    AppStartSupport.configureLogging(); 
    AppStartSupport.loadProperties(); 

} 

... 
} 

有没有人知道如何改变这个设置,以实现所有jUnit测试将使用的单个上下文?

感谢:-)

回答

0

一种方式实现这一目标是万无一失的Maven插件的forkCount属性设置为1(如果您正在运行基于Maven插件surfire JUnit测试),或根本不指定它所有插件都在POM文件中声明,因为默认值为1.这会导致应用程序上下文仅加载一次。在这种情况下,你需要确保你在修改它的测试之后清理上下文。

.. 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-surefire-plugin</artifactId> 
       <version>2.16</version> 
       <dependencies> 
       </dependencies> 
       <configuration> 
        <includes> 
         <include>**/*Test.java</include> 
        </includes> 
        <forkCount>1</forkCount> 
       </configuration> 
      </plugin> 
.. 
相关问题