上下文配置和@PropertySource

时间:2014-03-11 20:57:54

标签: java spring heroku

我有一个完美的测试设置如下......

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(loader = AnnotationConfigContextLoader.class, classes = { ApplicationConfig.class })
public class myTest {
    @Autowired
    private JestClient jestClient;
    @Autowired
    private DataSource dataSource;
    @Autowired
    private DSLContext jooq;

这运行良好,没有任何问题,但是当我在运行的应用程序中运行完全相同的部分测试代码时,所有地狱都会松动。让我详细说明......

我的java配置文件描述了一个属性文件,如

@Configuration
@ComponentScan({ "my.package" })
@PropertySource("classpath:/my/package/config/myfile.properties")
@Import(PersistenceConfig.class)
public class ApplicationConfig {

我在Heroku上运行我的应用程序,因此我将我的DI框架 - Spring 3.2嵌入到我的项目中。在该云服务上启动应用程序将需要我创建一个Spring框架启动器。所以这就是我所做的:

@ContextConfiguration(loader = AnnotationConfigContextLoader.class, classes = { ApplicationConfig.class })
public class ApplicationMain {

    private final static Logger LOGGER = LoggerFactory.getLogger(ApplicationMain.class);

    public static void main(String[] args) throws Exception {
        Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
        scheduler.start();

        // Choose what job to start based on a parameter
        JobDetail jobDetail = null;
        if (args != null && args.length > 0) {
            for (int i = 0; i < args.length; i++) {
                if (args[i].equals("GO1")) {
                    jobDetail = newJob(GogJob.class).build();

因此,如果使用GO1参数调用main,那么我的测试代码将执行。 但由于

而失败
java.lang.IllegalStateException
    Caused by: org.springframework.beans.factory.BeanDefinitionStoreException
        Caused by: java.io.FileNotFoundException

我相信这肯定是由于找不到属性造成的...... 我无法想象这个。

1 个答案:

答案 0 :(得分:1)

由于您的属性文件在测试中使用,因此它们应位于src/test/resources