java - 为什么 Arquillian 不再有嘲笑?
问题描述
如果您访问Arquillian 的主页,它会显示:No more mocks.
但是如果我有注入 EJB 2 的 EJB 1 并且我想测试 EJB 1,如果我不模拟它,我该如何模拟 EJB 2?Arquillian 是否用于集成而不是单元测试?为什么在 Arquillian 中模拟是一种不好的做法,还有什么替代方法?
解决方案
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
而只依赖于它的(简单)名称或接口,因此您可以在创建测试时将其换掉。
推荐阅读
- python - 如何使用python动态更新文件中的某些字典值
- php - Laravel 将一个类注入到 Laravel 中的另一个类中
- android - 在 Jetpack Compose 中跨可组合函数重用一组预览注释
- vue.js - 过渡vue路由器
- sql - Oracle SQL - 如果查询不返回结果,则返回一些默认值
- dynamics-crm - 使用数据工厂将数据摄取到动态 crm 中的查找字段
- node.js - MongoDb 条件分组
- javascript - 在 localStorage 上为数据库排队 CRUD 操作
- python - 使用类的海龟赛车游戏
- java - Hibernate Envers:Audit Reader 在尝试获取修订历史记录时抛出 LazyInitializationException