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);
    }