问题标签 [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.
java - 如何使用 Arquillian 模拟服务?
是否可以在 Arquillian 中使用某种模拟框架,或者确切地说如何模拟注入的 EJB?我知道,通过使用 CDI(上下文和依赖注入),可以在测试中注入替代方案。但是如果没有 CDI 作为注入机制,当我只使用 EJB 注入时,这怎么可能呢?
最近我用服务接口模拟实现测试了我的 EJB,如下所示:
这种方法是可行的,但需要大量自定义模拟实现。更糟糕的是,注入的模拟实例是代理并使用服务接口。这些不能转换为模拟实现类来比较结果。只能使用模拟实现的静态成员和方法。
我还测试了手动设置相关 EJB 的另一种可能性。这种方法有几个缺点。它要求测试的目标 EJB 具有非私有成员或设置器。当目标 EJB 依赖于 @PostConstruct 生命周期注释时,您必须在手动“注入”设置后调用它。此解决方案的优点是能够使用模拟框架,如 mockito 或 jMock。
有没有人分享经验,如何测试和设置这样的集成测试,甚至在其中使用模拟框架?
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 没有意义,因为它是一个自动运行的单元测试。谁能告诉我如何配置?
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:
如果我运行测试,这是输出:
cdi - Arquillian - Weld SE - 获取 NullPointerException
我是 Arquillian 的新手,想要进行一些基本的测试(注入一个 bean 并断言它做某事)。
例外:
测试用例类
当我运行它时,我得到一个 NullPointerException,bean 管理器为空。看起来我错过了一步,但从示例来看,这似乎就是我所需要的。
有任何想法吗?
沃尔特
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
java - 部署注入接口的类时出现“WELD-001408 Unsatisfied dependencies 错误”
我正在 JUnit4 和 Jboss6 上使用 Arquillian 进行一些单元测试。有一个外观(SomeFacadeclass),其中注入了“SomeClass”(这是一个接口)。当 Arquillian 部署 test.war 进行测试时,会弹出上述部署错误。我应该怎么做才能解决这个问题?
java - 代理背后的 Arquillian/Shrinkwrap MavenDependencyResolver
我正在使用 Jenkins 执行 Maven 构建,其中包括使用 Arquillian 的 EJB 集成测试。
托管 Jenkins 并运行构建的服务器位于代理后面,这应该不是问题,因为它settings.xml
包含有效的代理设置。(在我没有代理的本地系统上,它工作得很好。)
通过 maven(在运行时mvn install
)解决依赖关系非常好(从 bash 或 Jenkins 手动启动)但是如果我使用MavenDependencyResolver
Arquillian 的,我会得到一个异常:
例外
Java 源代码
pom.xml
我怎样才能确保这个 java 代码有一个代理(如果缺少代理是问题)。我必须使用环境变量还是 settings.xml?
是否有其他解决方案可以通过 Shrinkwarp 获得这种依赖关系,例如作为jar
? (我想这将是我的首选解决方案。)
环境细节
- 服务器操作系统:Ubuntu 10.04
- Maven 3.03
- 在 Tomcat 7 上运行的 Jenkins 1.413
- Arquillian 1.0.0.Alpha5
谢谢你。丹尼尔
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 中。
如果我的问题不清楚,请告诉我?
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?
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 方法,这样我就可以排除这个潜在的问题。
我还需要做什么来准备容器?
谢谢,
沃尔特