如果您转到Arquillian's home page,它说:No more mocks.
,但是如果我有注入EJB 2的EJB 1并且我想测试EJB 1,如果不这样做,如何模拟EJB 2?嘲笑吗? Arquillian是否用于集成而不是单元测试?为什么在Arquillian中嘲笑是一种不良习惯,还有什么选择?
答案 0 :(得分:2)
Arquillian实际上用于集成测试而不是单元测试。
正是出于这个原因,在Arquillian中进行大量模拟是一种不好的做法。首先,它大大挫败了使用Arquillian的目的。
也就是说,用Arquillian嘲笑您所描述的情况相当容易。由于Arquillian的默认模式是为您提供使用收缩包装构建的微型存档,因此在创建存档时,您可以简单地将EJB2替换为模拟版本。
例如:
@RunWith(Arquillian.class)
public class MyTest {
@Deployment
public static Archive<?> deployment() {
return ShrinkWrap.create(JavaArchive.class, "test.jar")
.addClass(com.real.EJB1.class)
.addClass(com.example.mock.EJB2.class)
;
}
// ..
}
由于EJB1
并不取决于EJB2
的实际类类型,而仅取决于其(简单)名称或接口,因此您可以在创建测试时将其换出。