我有一个简单的Mongo DB生产者连接到Mongo数据库
@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中的一个资源文件
<resources>
<Resource id="mongoUri" class-name="com.mongodb.MongoClientURI" constructor="uri">
uri mongodb://localhost/ironman
</Resource>
</resources>和一个简单的Junit @RunWith(WeldJUnit4Runner.class)
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
使用焊接
<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/
发布于 2017-11-26 04:35:32
如果你想在单元测试中处理@Resource,也许你可以看看ejb-cdi-unit,它在Weld-SE中运行测试,并提供一个CDI扩展,用@Inject替换@Resource,这样你就可以在你的测试中定义一个注入的CDI替代。
https://stackoverflow.com/questions/45622800
复制相似问题