首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CDI:@在junit weld中注入资源?

CDI:@在junit weld中注入资源?
EN

Stack Overflow用户
提问于 2017-08-11 04:18:47
回答 1查看 1.1K关注 0票数 1

我有一个简单的Mongo DB生产者连接到Mongo数据库

代码语言:javascript
复制
@SuppressWarnings({ "deprecation", "resource" })
@ApplicationScoped
public class MongoDBProducer {
    @Resource(name = "mongoUri")
    private MongoClientURI mongoClientURI;

    private DB database;

    @PostConstruct
    public void init() throws UnknownHostException {
        MongoClient mongoClient = new MongoClient(mongoClientURI);
        database =  mongoClient.getDB(mongoClientURI.getDatabase());
    }

    @Produces
    public DB createDB() {
        return database;
    }
}

我的src/main/resources/META-INF中的一个资源文件

代码语言:javascript
复制
<resources>
    <Resource id="mongoUri" class-name="com.mongodb.MongoClientURI" constructor="uri">
    uri  mongodb://localhost/ironman
    </Resource>
</resources>

和一个简单的Junit @RunWith(WeldJUnit4Runner.class)

代码语言:javascript
复制
public class MongoDBProducerTest {
    @Inject
    DB mongoDb;

    @Test
    public void runSampleTest() {
        assertEquals(mongoDb.collectionExists("jobs"), true);
    }
}

获取以下错误: org.jboss.weld.exceptions.WeldException: WELD-000049: Unable to invoke public void test.dingo.query.db.util.MongoDBProducer.init()在test.dingo.query.db.util.MongoDBProducer@a1cdc6d上抛出java.net.UnknownHostException

使用焊接

代码语言:javascript
复制
<dependency>
    <groupId>org.jboss.weld.se</groupId>
    <artifactId>weld-se</artifactId>
    <version>2.2.8.Final</version>
</dependency>

WeldContext和WeldJUnit4Runner来自这里- http://memorynotfound.com/java-se-unit-testing-cdi-junit-jboss-weld-se/

EN

回答 1

Stack Overflow用户

发布于 2017-11-26 04:35:32

如果你想在单元测试中处理@Resource,也许你可以看看ejb-cdi-unit,它在Weld-SE中运行测试,并提供一个CDI扩展,用@Inject替换@Resource,这样你就可以在你的测试中定义一个注入的CDI替代。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45622800

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档