相关疑难解决方法(0)

使用Maven进行集成测试的最佳实践?

我有一个我用Maven构建的项目,它使用Hibernate(和Spring)从数据库中检索数据等.

我在项目中对DAO的"测试"扩展了Spring,AbstractTransactionalDataSourceSpringContextTests因此可以将DataSource连接到我的测试类中,以便能够实际运行查询/ Hibernate逻辑,获取数据等.

在其他几个项目中,我使用这些类型的测试与HSQL数据库(内存中或指向文件)一起使用,以便能够有效地测试实际的数据库查询逻辑,而无需依赖外部数据库.这很有用,因为它可以避免任何外部依赖关系,并且在运行测试之前数据库的"状态"(每个都包含在回滚的事务中)都已定义良好.

我很好奇关于组织这些测试的最佳方法,这些测试对于Maven来说实际上是一种松散的集成测试.保持这些测试感觉有点脏src/test/java,但从我读过的内容来看,似乎没有一个一致的策略或实践来组织与Maven的集成测试.

从我到目前为止所看到的,似乎我可以使用Failsafe插件(或Surefire的第二个实例)并将其绑定到integration-test阶段,并且我还可以绑定自定义启动或关闭逻辑(例如用于启动/停止HSQL实例)pre-integration-test或post-integration-test.但是,这真的是最好的方法吗?

所以我的问题基本上是 - 用Maven组织这个的普遍接受的最佳做法是什么?我在文档中找不到任何一致的答案.

我想要的是:

  • 从集成测试中分离单元测试,因此在该test阶段仅运行单元测试
  • 能够将自定义启动/关闭逻辑绑定到pre-integration-test和post-integration-test
  • 将集成测试的报告与单元测试Surefire报告合并/提交

java testing integration-testing maven-2

68
推荐指数
3
解决办法
3万
查看次数

我在哪里可以找到完整的Maven Cargo插件示例进行EJB测试?

对于一些小型JBoss企业应用程序的测试,我想使用JUnit和Maven Cargo插件.(我知道还有JSFUnit,但首先我想仔细看看Cargo.)

是否有一个简单的在线可用示例,我可以将其用作运行JUnit测试的参考,该测试使用Maven Cargo插件使用JBoss(4.2或5.1)调用EJB操作?我已经找到了一些很好的配置介绍,但是我在EJB查找中收到了错误消息,所以看看它应该如何使用会很有帮助.

这是使用InitialContext的测试代码:

public void testEcho() {
   assertEquals("Echo Echo", lookupEchoBeanRemote().Echo("Echo"));
}

private EchoBeanRemote lookupEchoBeanRemote() {
    try {
        Context c = new InitialContext();
        return (EchoBeanRemote) c.lookup("EchoBean/remote");
    } catch (NamingException ne) {
        Logger.getLogger(getClass().getName()).log(Level.SEVERE, "exception caught", ne);
        throw new RuntimeException(ne);
    }
}
Run Code Online (Sandbox Code Playgroud)

这给出了这个错误:

testEcho(de.betabeans.Echo2Test)  Time elapsed: 0.885 sec  <<< ERROR!
java.lang.reflect.UndeclaredThrowableException
    at $Proxy3.Echo(Unknown Source)
    at de.betabeans.Echo2Test.testEcho(Echo2Test.java:17)
Caused by: java.security.PrivilegedActionException: java.lang.reflect.InvocationTargetException
    at java.security.AccessController.doPrivileged(Native Method)
    at org.jboss.ejb3.security.client.SecurityActions.createSecurityContext(SecurityActions.java:657)
    at org.jboss.ejb3.security.client.SecurityClientInterceptor.invoke(SecurityClientInterceptor.java:59)
    at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
    at org.jboss.ejb3.remoting.IsLocalInterceptor.invoke(IsLocalInterceptor.java:74)
    at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
    at org.jboss.aspects.remoting.PojiProxy.invoke(PojiProxy.java:62)
    at $Proxy4.invoke(Unknown Source)
    at …
Run Code Online (Sandbox Code Playgroud)

junit jboss maven-2 ejb cargo

2
推荐指数
1
解决办法
7881
查看次数

标签 统计

maven-2 ×2

cargo ×1

ejb ×1

integration-testing ×1

java ×1

jboss ×1

junit ×1

testing ×1