Testing Arquillian与Mockito和CDI

Testing Arquillian与Mockito和CDI,testing,mockito,cdi,jboss-arquillian,Testing,Mockito,Cdi,Jboss Arquillian,可以在测试类中创建spy(mock)对象吗 这是一个测试类 @无状态 @Slf4j 公共类UserDao{ @注入 私有TestBean TestBean; 公共字符串mock(){ 返回testBean.mock(); } 公共字符串notMock(){ 返回testBean.notMock(); } } TestBean代码 @无状态 @Slf4j 公共类TestBean{ 公共字符串notMock(){ 返回“notmock”; } 公共字符串mock(){ 返回“已实现的模拟”; }

可以在测试类中创建spy(mock)对象吗

这是一个测试类

@无状态
@Slf4j
公共类UserDao{
@注入
私有TestBean TestBean;
公共字符串mock(){
返回testBean.mock();
}
公共字符串notMock(){
返回testBean.notMock();
}
}
TestBean代码

@无状态
@Slf4j
公共类TestBean{
公共字符串notMock(){
返回“notmock”;
}
公共字符串mock(){
返回“已实现的模拟”;
}
}
这是我的测试

@RunWith(Arquillian.class)
公共类UserDataTest{
@统治
抛出公共ExpectedException=ExpectedException.none();
@注入
私有UserDao UserDao;
@部署
受保护的静态存档createWar(){
文件[]依赖项=Maven.configureResolver()
.withRemoteRepo(“nexus remote”http://maven.wideup.net/nexus/content/groups/public/“,“违约”)
.withRemoteRepo(“nexus发行版”)http://maven.wideup.net/nexus/content/repositories/releases/“,“违约”)
.决心(
“org.slf4j:slf4j simple:1.7.7”,
“eu.bitwalker:UserAgentUtils:1.15”,
“org.mockito:mockito all:1.10.8”
).without传递性().asFile();
回缩包装
.create(WebArchive.class,“pass.jpa.war”)
.addasWebInfoResource(“jbossas ds.xml”)
.addasWebInfoResource(“jboss deployment structure.xml”)
.addAsLibraries(
PassApiDeployments.createDefaultDeployment(),
PassUtilLibrary.createDefaultDeployment(),
PassJpaDeployments.createDefaultDeployment()
).addAsLibraries(依赖项);
}
@试验
公共void testMock(){
assertEquals(“MOCK”,userDao.MOCK());
}
@试验
公共void testNotMock(){
assertEquals(“非MOCK”,userDao.notMock());
}
}
我想在TestBean上创建一个spy对象来更改这个bean的test()方法的结果

所以在UserDao中创建TestBean spy是可能的

我通过这样的制作人解决了一些问题

@Singleton
公营模拟工厂{
@产生
@阿奎利安替代方案
公共TestBean getTestBean(){
当(mock(TestBean.class.mock())时返回。然后返回(“mock”).getMock();
}
}

但在这个例子中,我需要完全靠自己在Bean上创建。如果它是带有附加依赖项的bean,那么我将管理所有依赖项。

据我所知,将模拟框架与arquillian结合使用是不可能的

我自己没有使用过它,但是这个Arquillian扩展似乎是专门为支持Arquillian测试中的Mockito Spy对象而设计的:

从我的示例中,您可以看到可以使用Mock。它工作得很好。但问题是要建造一个模拟洞穴,而不是一个间谍。我解决了我的问题,但它与这个帖子无关。