Ant 构建 Junit 测试 Autowire 失败
Ant build Junit test Autowire fails
项目中配置的 junits 在我 运行 单独在 eclipse 中运行时工作正常,但是当我 运行 以 junit 目标构建 Ant 时,测试 类 被执行但抛出 NPE自动装配的组件。我在下面指定了上下文配置,它应该负责查找上下文并从中自动装配 bean。
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:DaoContextTest.xml" })
我的 ant 构建 junit 目标如下所示:
<target name="junit" depends="build">
<junit printsummary="yes" haltonfailure="yes">
<classpath refid="classpath-test" />
<classpath location="${webclasses.dir}" />
<formatter type="plain" usefile="false"/>
<batchtest fork="yes" todir="${test.classes}">
<fileset dir="${src.dir}">
<include name="**/*Test.java" />
</fileset>
</batchtest>
</junit>
</target>
我在 ant 调试模式下验证了类路径,它具有此 xml 文件的正确位置。我想如果 xml 丢失,它会抱怨加载上下文失败,如果我的 DaoContext xml 有不正确的 bean 配置,那么当我 运行 它时我的 junit 不会有 运行手动所以我怀疑它一定是 Ant 特有的东西。
我得到的例外是自动装配组件上的 NPE。我正在使用 ant 1.9.6,我尝试将 ant-junit.1.9 jar 复制到 web-inf 库,但这没有帮助。如果有人能指出我正确的方向,我将不胜感激?
我找到了类似的 post here 但它仍然是开放的。
解决方案是 this and this。
简而言之:Ant 默认使用 Junit3 测试运行器,因此要强制执行 Junit4 运行器需要在每个 Junit 类.
中包含以下方法
public static junit.framework.Test suite() {
return new JUnit4TestAdapter(MyJunitTest.class);
}
项目中配置的 junits 在我 运行 单独在 eclipse 中运行时工作正常,但是当我 运行 以 junit 目标构建 Ant 时,测试 类 被执行但抛出 NPE自动装配的组件。我在下面指定了上下文配置,它应该负责查找上下文并从中自动装配 bean。
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:DaoContextTest.xml" })
我的 ant 构建 junit 目标如下所示:
<target name="junit" depends="build">
<junit printsummary="yes" haltonfailure="yes">
<classpath refid="classpath-test" />
<classpath location="${webclasses.dir}" />
<formatter type="plain" usefile="false"/>
<batchtest fork="yes" todir="${test.classes}">
<fileset dir="${src.dir}">
<include name="**/*Test.java" />
</fileset>
</batchtest>
</junit>
</target>
我在 ant 调试模式下验证了类路径,它具有此 xml 文件的正确位置。我想如果 xml 丢失,它会抱怨加载上下文失败,如果我的 DaoContext xml 有不正确的 bean 配置,那么当我 运行 它时我的 junit 不会有 运行手动所以我怀疑它一定是 Ant 特有的东西。
我得到的例外是自动装配组件上的 NPE。我正在使用 ant 1.9.6,我尝试将 ant-junit.1.9 jar 复制到 web-inf 库,但这没有帮助。如果有人能指出我正确的方向,我将不胜感激? 我找到了类似的 post here 但它仍然是开放的。
解决方案是 this and this。
简而言之:Ant 默认使用 Junit3 测试运行器,因此要强制执行 Junit4 运行器需要在每个 Junit 类.
中包含以下方法 public static junit.framework.Test suite() {
return new JUnit4TestAdapter(MyJunitTest.class);
}