问题标签 [jboss-arquillian]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
11354 浏览

java - 如何使用 Arquillian 模拟服务?

是否可以在 Arquillian 中使用某种模拟框架,或者确切地说如何模拟注入的 EJB?我知道,通过使用 CDI(上下文和依赖注入),可以在测试中注入替代方案。但是如果没有 CDI 作为注入机制,当我只使用 EJB 注入时,这怎么可能呢?

最近我用服务接口模拟实现测试了我的 EJB,如下所示:

这种方法是可行的,但需要大量自定义模拟实现。更糟糕的是,注入的模拟实例是代理并使用服务接口。这些不能转换为模拟实现类来比较结果。只能使用模拟实现的静态成员和方法。

我还测试了手动设置相关 EJB 的另一种可能性。这种方法有几个缺点。它要求测试的目标 EJB 具有非私有成员或设置器。当目标 EJB 依赖于 @PostConstruct 生命周期注释时,您必须在手动“注入”设置后调用它。此解决方案的优点是能够使用模拟框架,如 mockito 或 jMock。

有没有人分享经验,如何测试和设置这样的集成测试,甚至在其中使用模拟框架?

0 投票
1 回答
1085 浏览

configuration - 使用 Arquillian 的嵌入式 glassfish 配置 - TmpDir

项目:我正在使用带有嵌入式 Glassfish 3.1-b28 的 Arquillian 1.0.0.4-ALPHA。我的项目有一个 arquillian.xml,没有 domain.xml,我的数据源有一个 sun-resources.xml 和一个 persistence.xml。我正在尝试对 EJB3 / JPA2 应用程序进行单元测试。

我已经做过的事情:我的第一个单元测试甚至奏效了。但是,当我开始使用 @Deployment 注释和返回 webArchive 的静态方法开发多个类时,就会引发异常。原因是,第一个类的 war 文件未正确取消部署,因此下一个测试文件无法部署。我读到这是一个错误并升级到更新版本的 glassfish 来解决这个错误。

问题:现在更新版本的 glassfish 导致配置问题。我可以通过在 glassfish 中设置 tmpDir 来解决这个问题,如下所述:

http://java.net/jira/browse/EMBEDDED_GLASSFISH-122

现在的问题是,我如何/在哪里可以设置这些设置?arquillian.xml 似乎不正确。而且我不想在这种情况下使用 domain.xml 。最好是 sun-resources.xml,但这似乎也不合适。asadmin 没有意义,因为它是一个自动运行的单元测试。谁能告诉我如何配置?

0 投票
1 回答
3539 浏览

security - 嵌入式 Glassfish、安全性和 Arquillian 问题

我想使用 Arquillian 在嵌入式 Glassfish 上测试我的 EJB。

重要的是我必须提高安全性,因为我的 bean 逻辑会进行一些编程安全检查 ( sessionContext.isCallerInRole(role))。

是否可以在嵌入式 Glassfish 上使用 Arquillian 模拟登录?

如何设置 Embedded Glassfish 以使用用户和角色属性文件?

[编辑]

我找到了一篇我决定遵循的指示的帖子(http://community.jboss.org/message/580290),但我仍然遇到问题。

1 我arquillian.xml的未接听
2 我收到有关的警告@Resource SessionContext
3 我无法获取正在运行的服务器的实例

src/test/resources/arquillian.xml:

我的测试:

我的登录助手类:

我的 EJB:

如果我运行测试,这是输出:

0 投票
2 回答
2775 浏览

cdi - Arquillian - Weld SE - 获取 NullPointerException

我是 Arquillian 的新手,想要进行一些基本的测试(注入一个 bean 并断言它做某事)。

例外:

测试用例类

当我运行它时,我得到一个 NullPointerException,bean 管理器为空。看起来我错过了一步,但从示例来看,这似乎就是我所需要的。

有任何想法吗?

沃尔特

0 投票
2 回答
807 浏览

maven - Arquillian Maven configuration

I am using Arquillian for Ejb unit test. I am using jboss-eap-5.1. Can anyone please tell me what is the configuration in maven for Arquillian which uses jboss-eap-5.1

0 投票
2 回答
3455 浏览

java - 部署注入接口的类时出现“WELD-001408 Unsatisfied dependencies 错误”

我正在 JUnit4 和 Jboss6 上使用 Arquillian 进行一些单元测试。有一个外观(SomeFacadeclass),其中注入了“SomeClass”(这是一个接口)。当 Arquillian 部署 test.war 进行测试时,会弹出上述部署错误。我应该怎么做才能解决这个问题?

0 投票
2 回答
9151 浏览

java - 代理背后的 Arquillian/Shrinkwrap MavenDependencyResolver

我正在使用 Jenkins 执行 Maven 构建,其中包括使用 Arquillian 的 EJB 集成测试。

托管 Jenkins 并运行构建的服务器位于代理后面,这应该不是问题,因为它settings.xml包含有效的代理设置。(在我没有代理的本地系统上,它工作得很好。)

通过 maven(在运行时mvn install)解决依赖关系非常好(从 bash 或 Jenkins 手动启动)但是如果我使用MavenDependencyResolverArquillian 的,我会得到一个异常:

例外

Java 源代码

pom.xml

我怎样才能确保这个 java 代码有一个代理(如果缺少代理是问题)。我必须使用环境变量还是 settings.xml?

是否有其他解决方案可以通过 Shrinkwarp 获得这种依赖关系,例如作为jar? (我想这将是我的首选解决方案。)

环境细节

  • 服务器操作系统:Ubuntu 10.04
  • Maven 3.03
  • 在 Tomcat 7 上运行的 Jenkins 1.413
  • Arquillian 1.0.0.Alpha5

谢谢你。丹尼尔

0 投票
1 回答
1206 浏览

dependency-injection - 关于 Arquillian 进行远程测试的基本问题

我最近开始了解 Arquillian。正在关注入门教程,了解了有关远程、嵌入式和托管容器的“容器品种”。我对 Arqillian 如何对待这些不同品种感到有些困惑。

我的问题是:入门教程第一个示例(具有 TemparatureConverter)使用 JBoss AS 6 作为远程容器。我的理解是,包含 TemparatureConverter bean 的主要应用程序存档将部署在 JBoss AS 6(在其自己的 VM 中运行)中,而我的 Test 类将在单独的 VM 中运行。

我在 TemparatureConverter.java 即 Bean 类中添加了一些日志消息:

我还在我的测试类中添加了一些日志消息:

现在我启动 JBoss AS 并通过命令行运行测试用例,输入:mvn test -Pjbossas-remote-6

我在想我在 Bean 类中添加的日志消息将打印在 JBoss 控制台上,而我在我的 Test 类中添加的日志消息将打印在 Maven 控制台窗口上,因为这两件事在单独的 VM 中运行。

然而这并没有发生,我看到所有的日志消息都打印在 JBoss AS 控制台上。

这意味着,我的测试用例与 Bean 类一起在 JBoss AS 容器中运行。

如果这是真的,那么这里的偏远在哪里?我的意思是,测试用例和 bean 都在同一个 JVM 中运行。这类似于“嵌入式容器”行为,不是吗?

我指的是这个解释:

但在这种情况下,Arquillian 似乎将我的测试用例与 Bean 类放在同一个 JVM 中。

如果我的问题不清楚,请告诉我?

0 投票
1 回答
2928 浏览

java - 使用 Arquillian (arq-jbossas-remote) 测试有状态会话 Bean

我有几个@Stateful像这样注释的 SessionBean:

现在我想用 Arquillian (1.0.0.Alpha5) 测试它们,但是得到很多不同的错误,如果注释是@Stateful@Stateless,如果@Named添加了 a 或者没有 @Remote (和implements接口),消息会有所不同。

重现步骤:

  • 使用原型 org.jboss.weld.archetypes:jboss-javaee6-webapp:1.0.1.CR2 创建新的 maven 项目
  • 您可能需要设置 jboss.home(参见 readme.txt)
  • 修改 pom.xml 并将 profiles.profile[id=default].build.plugins.plugin[artifactId=maven-surefire-plugin].configuration.skip 设置为 false
  • 启动 JBoss-6.0.0.Final
  • 执行测试(应该通过):mvn test -Parq-jbossas-remote

这里测试的 bean ist MemberRegistration

如果您现在更改@Model@Stateful,JBoss 将使用堆栈跟踪进行循环,并@Named @Stateful出现以下错误:

@Named @Stateless

如何@Stateful使用 Arquillian 测试我的 Bean?

0 投票
3 回答
1727 浏览

java - db4o - 数据库关闭异常

我正在尝试通过一个 arquillian 测试用例使用 db4o 存储一个实体,并得到一个 DatabaseClosedException:


测试集:com.walterjwhite.address.api.datastore.TestAddressDatastore

测试运行:1,失败:0,错误:1,跳过:0,经过时间:2.149 秒 <<< 失败!test_save(com.walterjwhite.address.api.datastore.TestAddressDatastore) 已用时间:0.68 秒 <<< 错误!com.db4o.internal.ObjectContainerBase.checkClosed(ObjectContainerBase.java:303) 处 com.db4o.internal.ObjectContainerBase.checkTransaction(ObjectContainerBase.java:331) 处 com.db4o.internal.ObjectContainerBase 处的 com.db4o.ext.DatabaseClosedException。 asTopLevelStore(ObjectContainerBase.java:412) at com.db4o.internal.ObjectContainerBase.storeInternal(ObjectContainerBase.java:1602) at com.db4o.internal.ObjectContainerBase.store(ObjectContainerBase.java:1584) at com.db4o.internal.ObjectContainerBase .store(ObjectContainerBase.java:1576) 在 com.db4o.internal.ObjectContainerSession.store(ObjectContainerSession.java:

对于我的测试用例,我正在使用 /tmp 中的文件创建一个对象服务器。创建文件后,对象容器会通过 setter 自动注入,否则 objectContainer 将为 null,这将是一个不同的异常。

我在代码中加入了一些调试语句,以确保在 store 调用之后才调用 dispose 方法,这样我就可以排除这个潜在的问题。

我还需要做什么来准备容器?

谢谢,

沃尔特