gpt4 book ai didi

java - 如何为 spring 规范编写单元测试?

转载 作者:行者123 更新时间:2023-11-28 20:28:10 24 4
gpt4 key购买 nike

我创建了一个构建器类来构造 Specifications目的。它用于为 JpaSpecificationExecutor 创建查询。使用构建器,因为我有许多参数可以为 null/空(来自用于过滤的用户),没有它我不能只使用 Specifications:

public class SpecificationBuilder<T> {

private Specifications<T> specification;

public SpecificationBuilder() {

}

public SpecificationBuilder(final Specification<T> spec) {
specification = Specifications.where(spec);
}

public SpecificationBuilder<T> appendOr(final Specification<T> spec) {
specification = Specifications.where(spec).or(specification);
return this;
}

public SpecificationBuilder<T> appendAnd(final Specification<T> spec) {
specification = Specifications.where(spec).and(specification);
return this;
}

public Specification<T> build() {
return Specifications.where(specification);
}

}

我的问题是我不知道如何单独测试它。当然,我可以 Autowiring 真实存储库(在内存数据库上),但我不想为此涉及任何其他类,并且只测试逻辑,即如何创建 OR 和 AND 子句。

不幸的是,在 spring API 中我找不到任何有帮助的方法

最佳答案

  1. 如果您必须测试与数据库对话的实际代码,请使用 DBUnit 让您的生活更轻松,并且建议您使用 HSQLDB,这样您的测试将能够在运行时设置它们的环境,而无需需要已经安装和配置的数据库。在集成测试中,您检查查询是否正确、可执行、返回预期结果、数据模型是否有效……您不需要检查集成测试中所有可能的组合,只检查正确的执行和预期的结果。

  2. 如果您不必与数据库对话(appendOr、appendAnd - 您检查的是行为,而不是数据。检查规范构建器是否具有预期的行为 - 应用 AND、OR..... 谓词),请使用通用模拟库:EasyMock、Mockito 或任何其他库,并使测试不真正与数据库对话,这通常会使测试更快更简单。

所以,如果你想“只测试逻辑,如何创建 OR 和 AND 子句”,你可以使用模拟来检查创建方式,但是你应该对方法进行至少一个集成测试:规范 build() 最大数量标准,如 appendOr , appendAnd ....

关于java - 如何为 spring 规范编写单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44671835/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com