我在这里很新,我不想诉诸问,但似乎我别无选择。
我正在编写自动化测试,不久前我发现了Spring和Dependancy Injection及其所有优点。我在测试中使用它作为我的主要数据提供者(虽然我的一位同事不同意这种用法,我不明白为什么),像这样:
/src/test/java/automation/data
列表:
@ContextConfiguration("classpath:/spring/surveyFlows.xml")
public class SurveyDataProvider
{
@Autowired
private List<Survey> allSurveys;
public List<Survey> getAllSurveys()
{
return allSurveys;
}
public SurveyDataProvider()
{
TestContextManager testContextManager = new TestContextManager(getClass());
try
{
testContextManager.prepareTestInstance(this);
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
当然我已经在里面找到了我的XML
/src/test/resources/spring/
。
有趣的是,如果我使用IntelliJ运行它,这可以正常工作,但maven
拒绝运行,给我那个该死的错误:
引起:org.springframework.beans.factory.BeanDefinitionStoreException:IOException从类路径资源[spring / surveyFlows.xml]解析XML文档;嵌套异常是java.io.FileNotFoundException:类路径资源[spring / surveyFlows.xml]无法打开,因为它不存在
我在网上看了好几个小时,尝试各种各样的事情:
/src/main
pom.xml
......没有骰子。
所以我有点卡在这里,而且我正在认真考虑用硬编码的参数恢复旧的Java风格。
如果有人有线索......
答案 0 :(得分:2)
这对我们有用。如果您找到替代方式,请告诉我。
<build>
<!--Your other configuration -->
<testResources>
<!-- Not sure if including resource from main is needed -->
<testResource>
<directory>${project.basedir}/src/main/resources</directory>
</testResource>
<testResource>
<directory>${project.basedir}/src/test/resources</directory>
</testResource>
</testResources>
</build>
答案 1 :(得分:1)
我使用spring test classes和junit。确保将正确的依赖项放在pom.xml中:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>3.2.1.RELEASE</version>
</dependency>
我用以下内容注释测试:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:test-context.xml")
我的test-context.xml位于:src / test / resources / test-context.xml
那就是它!使用此配置工作!