- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想使用weld-se 进行单元测试CDI。但是,我遇到了 Weld 无法解决 bean 的问题。我创建了一个小项目来演示构建 gradle 的问题。
我在 <project-root>
中有以下文件文件夹:
./build.gradle
./src/main/java/cdi/Book.java
./src/main/resources/META-INF/beans.xml
./src/test/java/cdi/BookTest.java
./src/test/resources/META-INF/beans.xml
apply plugin: 'java'
repositories {
mavenCentral()
}
dependencies {
compile 'org.jboss.weld.se:weld-se:2.0.4.Final'
testCompile 'junit:junit:4.11'
}
package cdi;
public class Book {
private String title;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
}
package cdi;
import org.jboss.weld.environment.se.Weld;
import org.jboss.weld.environment.se.WeldContainer;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
public class BookTest {
private static Weld weld;
private static WeldContainer weldContainer;
@BeforeClass
public static void setupClass() {
weld = new Weld();
weldContainer = weld.initialize();
}
@AfterClass
public static void teardownClass() {
weld.shutdown();
}
@Test
public void dummyTest() {
Book book = weldContainer.instance().select(Book.class).get();
book.setTitle( "foobar");
assertEquals("foobar", book.getTitle());
}
}
beans.xml
是相同的。)
<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
version="1.1" bean-discovery-mode="all">
</beans>
gradle clean build
构建项目时,我收到一个错误,如下所列。我用谷歌搜索,但无法让它工作。
org.jboss.weld.exceptions.UnsatisfiedResolutionException: WELD-001308 Unable to resolve any beans for Types: [class cdi.Book]; Bindings: [QualifierInstance{annotationClass=interface javax.enterprise.inject.Any, values={}, hashCode=868729182}]
at org.jboss.weld.manager.BeanManagerImpl.getBean(BeanManagerImpl.java:824)
at org.jboss.weld.bean.builtin.InstanceImpl.get(InstanceImpl.java:78)
at cdi.BookTest.dummyTest(BookTest.java:29)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecuter.runTestClass(JUnitTestClassExecuter.java:80)
at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecuter.execute(JUnitTestClassExecuter.java:47)
at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassProcessor.processTestClass(JUnitTestClassProcessor.java:69)
at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:49)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
at org.gradle.messaging.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
at org.gradle.messaging.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
at com.sun.proxy.$Proxy2.processTestClass(Unknown Source)
at org.gradle.api.internal.tasks.testing.worker.TestWorker.processTestClass(TestWorker.java:103)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
at org.gradle.messaging.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:355)
at org.gradle.internal.concurrent.DefaultExecutorFactory$StoppableExecutorImpl$1.run(DefaultExecutorFactory.java:66)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:724)
最佳答案
我遇到了完全相同类型的问题,这是由 Gradle 将 META-INF/beans.xml 文件放入 build/resources/而不是 build/classes 引起的。
据我所知, Weld 不会扫描没有 beans.xml 文件的类。
一个丑陋的修复是在运行测试之前更改 build.gradle 文件以复制文件。这对我有用,我目前不知道有任何不良副作用。
对 Gradle 文件的更改。
test.doFirst {
copy {
from 'build/resources/main/META-INF/beans.xml'
into 'build/classes/main/META-INF/'
}
copy {
from 'build/resources/test/META-INF/beans.xml'
into 'build/classes/test/META-INF/'
}
}
关于jakarta-ee - 如何使用weld-se对CDI进行单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19080768/
我正在尝试从 Glassfish+Jersey+Weld 迁移到 Jetty。 我有这样的设置:gist of pom.xml, web.xml and Java launcher . 应用程序似乎可
注意:我已经尝试过类似问题的可用解决方案。 我正在使用JSF,Java 8,Tomcat 9,Maven,H2 db开发一个简单的CRUD应用程序。 当我尝试启动服务器时,发生以下异常 由以下原因
我刚刚将 Weld 从版本 2.4.4 更新到 3.0.1。我在应用程序启动时遇到以下错误,但找不到解决方案。我正在使用 Weld SE。 Sep 15, 2017 1:25:12 PM org.jb
我想使用 WELD SE 和 JEE8 (CDI 2.0) 创建 REST 资源的单元测试。 这是 REST 资源类的代码: @Path("/members") @RequestScoped publ
我正在使用 NetBeans 和 Glassfish 4.1.1 开发一个 Web 应用程序。我使用 JSF 和 CDI 来管理 Facelets 的支持 bean。由于在更改代码中的任何内容后不久,
从 JPA 2.1 开始,可以将 EJB 注入(inject)到实体监听器中。然而,WildFly 9.0.2 final 失败并出现以下异常。 15:41:12,125 ERROR [org.jbo
我使用 Weld SE 创建了一个简单的 JavaSE 应用程序。我正在尝试使用 gradle run 运行它会抛出异常: :compileJava UP-TO-DATE :processResour
我正在尝试在 DAO 类中注入(inject)一个实体管理器并使用 Weld 容器对其进行测试,但我不断收到以下异常: org.jboss.weld.exceptions.NullInstanceEx
由于某种原因,以下代码不起作用,我不明白为什么。我目前的,相当随意的,从大惊小怪的几个细微变化的信念是,因为 bean 是在 ExternalContext 之前创建的。它导致异常。但是,Extern
我有一个 Java 8 项目和一个 JBoss 7.1.0GA 服务器。我有一个带有全局变量的批处理类 @EJB public MyInterface delegate; 它在我的 ejb-jar.x
我的项目昨天运行良好。我唯一做的就是将结构从单一 war 更改为多模块 pom。如果我正确理解堆栈跟踪,则焊接和omnifaces websocket lib之间存在歧义。但是,在堆栈跟踪上似乎没有对
我按照文档(https://docs.jboss.org/weld/reference/latest/en-US/html/injection.html)创建限定符,现在我在wildfly-10.1.
我正在开发一个 JavaFX 2 项目,并且该应用程序必须使用另一个 main 方法(根据生成的 JAR list 为 com.javafx.main.Main)启动。据官方焊缝reference引导
我们有一个 Web 应用程序,目前正在使用 Java EE 7、JSF 2.2 和 Glassfish 4.0 开发。有两个特定的托管 Bean,它们具有循环依赖关系。 Usuario Control
我正在使用 Weld 来观察事件。我认为有一种方法可以指定观察者是否异步,但我没有找到该注释或文档。 观察者可以是异步的吗?如果是这样,我需要做什么才能做到这一点? 最佳答案 有一个开放请求:CDI-
我正在尝试将 war 部署到 JBoss AS 7.1.1 服务器中,但在尝试注入(inject) EntityManager 时部署失败: 17:44:48,037 ERROR [org.jboss
我尝试在 Weld 中制作装饰器,但 Weld 返回错误。我不明白我的错误是什么。我使用了相同的 Weld 示例“weld-se-numberguess”,并创建了一个装饰器扩展游戏。 Set 18
我使用 JBoss AS 7.1.1 + CDI (Weld) + JSF + Intellij IDEA。我创建了项目并下载了文件: 1. jsf-api.jar 2. jsf-impl.jar 3
我正在搭建学习 JavaEE7 中 CDI 的基础环境。我有以下用于启动 Weld 的代码。只是启动和关闭。 package com.anshbansal; import org.jboss.weld
我使用 weld se 2.0 和其他简单的依赖项构建了一个应用程序。在我的开发环境(eclipse)中这工作正常,没有错误,但是......在生产中应用程序完全崩溃并且焊接的实习生依赖部分抛出“模糊
我是一名优秀的程序员,十分优秀!