单元测试
简介
Phoenix 框架提供了一个测试套件,用于简化聚合根上下文的测试。该套件允许用户在 JUnit 框架中对聚合根进行纯业务逻辑的测试,并避免持久化、Spring 交互和运行时(Actor)等复杂上下文的依赖和引入。
如何使用
使用Phoenix框架聚合根测试套件,您需要按照以下步骤进行配置和测试:
- 配置依赖项:您需要将
phoenix-server
(聚合根所需依赖)添加到您的测试项目依赖项中。 - 创建测试类:您需要创建一个测试类来测试聚合根。可以使用
JUnit
注释来定义测试方法。 - 编写测试代码:您需要编写测试代码来测试聚合根的业务逻辑。您可以使用聚合根测试套件提供的
EntityAggregateFixture
来模拟聚合根的运行。 - 运行测试:您可以使用JUnit框架运行测试,或使用集成开发环境(IDE)自动运行测试。
实体聚合根测试套件功能
Phoenix框架聚合根测试套件提供了以下功能:
- 模拟工具:您可以使用模拟工具来模拟聚合根的处理消息过程,并返回一个可断言的结果(Event)
- 聚合根工厂:您可以使用测试模板来快速创建聚合根对象
- 聚合根上下文:测试套件支持聚合根实际运行的大多数上下文(
EntityAggregateContext
提供的内容),如 Timer、DGCManager、invoke - 快照:测试套件支持模拟聚合根快照、溯源快照等过程
- Spring 集成:测试套件也支持
@AutoWired
等 Spring 提供依赖注入能力,但用户需要通过EntityAggregateFixture.mockBean()
方法提供聚合根需要注入的 Bean 信息。
使用案例
1. 基于聚合根测试套件断言命令处理结果
public class UnitTests {
@Test
public void test() {
// 1. 初始化测试套件
EntityAggregateFixture testFixture = new EntityAggregateFixture(Sets.newHashSet(DistributedDataAggregate.class.getName()));
// 2. 构建命令
Message msg = MessageFactory.getCmdMsg("dst", "src", new DDataApi.UpdateCmd());
// 3. 处理并断言
testFixture = testFixture
.when(msg) // 模拟处理
.expectMessage(DDataApi.UpdateEvent.class) // 断言 Event
.expectRetSuccessCode() // 断言结果是成功
.printIdentify(); // 打印 msgID
// 4. 同样, 测试套件提供了 API 来查询聚合根状态等信息
// 聚合根上下文对象
EntityAggregate lastAggregate = testFixture.getLastAggregate();
// 用户聚合根对象
Object aggregateRoot = lastAggregate.getAggregateRoot();
// 聚合根扩展对象
EntityAggregateExtend entityAggregateExtend = lastAggregate.getEntityAggregateExtend();
// 测试套件最后一次最次的结果
Message lastOutMsg = testFixture.getLastOutMsg();
}
}