当JUnit测试从eclipse运行时,ApplicationContext会加载,但不会从ant build运行

时间:2014-11-07 18:36:13

标签: java spring ant junit applicationcontext

对我来说似乎很奇怪。 JUnit测试从eclipse运行良好。但是当我从Ant命令行运行时,它显示错误。看起来它不是加载/应用程序上下文。这是测试类的基类。

@ContextConfiguration(locations = { "classpath*:applicationContext.xml"})
public abstract class TransactionalTestCase extends StrutsSpringTransactionalTests {

    @Before
    public void onSetUp() throws Exception {
        super.setUp();
    }

    @Override
    protected void setupBeforeInitDispatcher() throws Exception {
        servletContext.setAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE, appContext);
    }

当我尝试在此方法中打印appContext时,会打印出来     org.springframework.context.support.GenericApplicationContext@9320aa71:启动日期xxxxxxx

但是它从ant build命令行打印出来。

我比较了eclipse和ant的类路径。两者都是一样的。包括相同的文件和文件夹。

当我从ant build运行时,

@ContextConfiguration没有生效?

还有什么可能是错的?

StrutsSrpingTransactionalTests类

@RunWith(SpringJUnit4ClassRunner.class)
@TestExecutionListeners({
    TransactionalTestExecutionListener.class,
    DependencyInjectionTestExecutionListener.class, 
    DirtiesContextTestExecutionListener.class
})
@Transactional
public abstract class StrutsSpringTransactionalTests extends StrutsTestCase implements ApplicationContextAware {

    protected ApplicationContext appContext;

    @Override
    public void setApplicationContext(ApplicationContext appContext) throws BeansException {
        this.appContext = appContext;
    }
}

1 个答案:

答案 0 :(得分:0)

想通了,问题在于JUnit版本。 Eclipse使用Junit4,而ant默认使用Junit3。