问题标签 [cdi-unit]

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 投票
1 回答
1021 浏览

java - Jglue(CDI 单元)是否仍然可用?

在一些项目中,我使用 jglue 来测试 CDI 注入支持。

服务器“jglue.org”和 maven 存储库不再可访问。有谁知道会发生什么?

0 投票
3 回答
3356 浏览

unit-testing - 使用 CDI Unit 和 EasyMock 进行单元测试

我有一个 CDI 项目,我想用模拟创建单元测试。为了管理模拟,我想使​​用 EasyMock 并使用 CDI 运行,我发现 cdi-unit 项目似乎很容易使用。

我在 CDI 上下文中使用 EasyMock 进行模拟时遇到问题。这是我的单元测试:

IStockDao 需要在测试中进行模拟,所以为了得到它,我想使用这样的 @Produces 方法(在 @AdditionalClasses 给 cdi 单元的 MockFactory 类中):

当我运行我的单元测试时,模拟在单元测试中很好,但我收到了这个错误:

java.lang.IllegalArgumentException:不是模拟:org.jboss.weld.proxies.IStockDao$-1971870620$Proxy$_$$_WeldClientProxy

这是因为 CDI 没有提供 EasyMock IStockDao 的实例,而是提供了一个代理实例,而 EasyMock 在这些方法(如重置方法)中不接受这个。

因此,我将 MockFactory 中的 @ApplicationScoped 替换为 @Dependent ,它不会代理实例,但我有一个新问题:

这个注解在每个注入点给出了一个新的模拟实例,所以我可以使用它,因为我在单元测试中有一个模拟来模拟在测试类中调用的方法。并且这个模拟实例在被测试的类中必须是相同的(@Dependent 不是这种情况)。

如何在单元测试和测试类中获得相同的实例?

谢谢。

0 投票
1 回答
1192 浏览

cdi - 使用 WicketTester 和 CDI-Unit 进行单元测试在 Eclipse 中工作,但在 Maven 构建期间失败。我错过了什么?

我正在尝试使用 CDI-Unit 来测试我的 Wicket 组件,这些组件使用 CDI 进行依赖注入。测试似乎在 Eclipse 中完美运行,但在我的 Maven 构建期间失败,我似乎找不到任何提示和问题所在。

我创建了一个简单的抽象 WicketPanel

和注塑厂:

然后使用 CDI-Unit 创建了一个单元测试:

我没有包含 TestPanel,但它非常简单(而且或多或少是空的)。

当我在 Eclipse 中执行此操作时,测试以绿色通过!

当我使用 Maven 执行此操作时,我得到以下信息:

我做错了什么的任何线索?

0 投票
3 回答
2860 浏览

unit-testing - 使用 CDI-Unit Jglue 对 CDI 进行单元测试

我们想使用 Jglue 框架对我们的 CDI 应用程序进行单元测试。我们使用 gradle 进行构建。

我们准备了这样的东西:

1) 测试类:

2)接口:

3)Gradle设置(我们跟着入门http://jglue.org/cdi-unit/

4) 测试类:

当我们运行这个简单的测试时,我们总是会得到这个异常:

在 /build/reports/tests/index.html 中有:

请问有人知道如何避免这个例外吗?如果需要,我可以添加更多细节。

0 投票
2 回答
2883 浏览

java - 无法注入在 persistence.xml 中声明的 EntityManager

我正在尝试开发一个(基于 Maven 的)jar 库,它可以充当我的 Java 应用程序的 DAL。

这是我的persistence.xml文件

这是DataSource定义,使用@DataSourceDefinition注释完成

这是EntityManagerpersistence.xml定义中检索的 DAO(我使用QueryDSL来简化查询定义)

另外,我在文件夹中添加beans.xmlMETA-INF文件

这是测试类(我使用CDI-Unit进行 CDI 测试)

当我运行测试时,我在测试类的标记行处得到一个 NullPointerException。此外,如果我调试测试,我可以看到类的EntityManager entityManager字段UserDAOnull,所以它不是从persistence.xml文件中注入的。

我是否遗漏了 Java 持久性/CDI 机制中的某些内容?

谢谢

编辑 1:我已将 Maven 依赖项添加到

编辑 2:按照@earthling 的建议,我在beans.xml 文件中添加了以下 bean 定义

beans.xml但我在文件中收到以下错误

cvc-complex-type.2.4.a:发现以元素“bean”开头的无效内容。'{" http://java.sun.com/xml/ns/javaee ":interceptors, "http://java.sun.com/xml/ns/javaee":decorators, " http://java之一.sun.com/xml/ns/javaee ":alternatives}' 是预期的。

0 投票
2 回答
1295 浏览

unit-testing - CDI 单元测试因限定符类型的依赖项异常而失败

嗨,我定义了以下限定符类型..

以及其中的两个实现。

我从客户端注入..

每件事在运行时都可以正常工作..

但是当我运行单元测试时问题就来了..

我收到以下异常..

org.jboss.weld.exceptions.DeploymentException: WELD-001408: 在注入点 [BackedAnnotatedField] @Inject @SortAndFilterType private com.collabnet.ctf.saturn.client.apps.users.ChangeUsersStatus 带有限定符的 SortAndFilterProvider 类型的依赖关系不满足。 mSortAndFilterProvider

我从这样的单元测试中调用它..它使用@RunWith(CdiRunner.class) 运行

这里出了什么问题?

0 投票
1 回答
464 浏览

junit - 使用 bean 注入进行 JUnit 测试

我正在尝试使用 JUnit 测试我的 Web 应用程序。我看到有 cdi-unit 看起来很不错或带有 JBoss 的 Arquillian(我在 Seam3,JBoss 7.1.3 上),但我无法让它工作。

一旦我尝试注入一个 bean(并且我需要为我的测试注入多个 bean),它就无法正常工作。我得到“在注入点带有限定符 [@default] 的类型 [...] 的不满意注入”。

特别是对于EntityManager我需要注入的。是否有一些简单的插件可以添加到我的 pom 文件中以使其正常工作?

谢谢 !

0 投票
1 回答
884 浏览

cdi - 如何从 CDI 单元扫描中排除类?

我正在使用 CDI 单元运行器运行测试,并希望排除某些类(因为它们作用于 CDI 事件)。我试过 beans.xml:

但 CDI 单元似乎忽略了它。那么用 CDI-unit 排除类的正确方法是什么?

0 投票
1 回答
1486 浏览

java - CDI-Unit @Produces 不工作

首先,我在 Google 上进行了密集搜索,根据http://jglue.org/cdi-unit-user-guide/生成要注入单元测试的东西应该可以正常工作。

我的设置:

例外:

org.jboss.weld.exceptions.DeploymentException:异常列表有 3 个异常:

异常0:org.jboss.weld.exceptions.DeploymentException:WELD-001408:在注入点[BackedAnnotatedField] @Inject private at.fhhagenberg.unitTesting.beans.SurveyBean.log ...

这意味着 CdiRunner 尝试构建我的 SurveyBean 并注入记录器,但它找不到要注入的对象,尽管我专门在基类中生成它(EntityManager 也是如此)。

有人知道如何解决这个问题吗?

PS:我不允许添加的标签:cdi-unit,jglue

0 投票
1 回答
1841 浏览

maven - Java EE JUnit 在使用 EJB 时无法与 CDI-Unit 一起使用

我正在使用 CDI-Unit JARhttp://jglue.org/cdi-unit/以便能够在我的 JUnit 4 测试中使用 CDI,我已经注入了我的 EJB 并调用了一个方法来持久化一个Client对象,但是我收到以下错误:

我的无状态 EJB (OperationsEJB.java):

我的 JUnit 测试:

我没有使用 Maven,我已经下载了weld-se-core-2.3.0.Final.jar,但我遇到了另一个错误:


编辑 :

现在我正在使用 Maven,这是我的 JUnit 测试代码:

OpTest.java:

这是我的 EJB:

当我运行测试时,我收到此错误:

JUnit 日志中显示的错误是:

先感谢您。