[英]How to write unit test for CommonsMultipartFile with Mock in Spring
[英]How to write a unit test for spring specification?
我创建了一个构建规范类的构建器类。 它用于为JpaSpecificationExecutor
创建查询。 之所以使用该构建器,是因为我有许多可以为空/空的参数(来自用户进行过滤),没有它我就不能仅使用“ 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);
}
}
我的问题是我不知道如何单独进行测试。 当然,我可以自动连接真正的存储库(在内存中的db上),但我不想为此涉及任何其他类,并且仅测试逻辑,如何创建OR和AND子句。
不幸的是,在Spring API中,我找不到任何可以帮助您的方法
如果必须测试与数据库通信的实际代码,请使用DBUnit简化工作,建议使用HSQLDB,以便测试可以在运行时设置其环境,而无需已安装数据库和配置。 在集成测试中,您检查查询是否正确:,可执行文件,返回预期结果,数据模型是否有效……您无需检查集成测试中的所有可能组合,只需检查正确的执行和预期结果即可。
如果您不必与数据库进行对话(appendOr,appendAnd-您检查行为,而不是数据。请检查规范构建器具有预期的行为-apply AND或OR .....谓词),请使用通用的模拟库:EasyMock ,Mockito或其他任何东西,并使测试与数据库不真正对话,这通常会使测试更快,更简单。
因此,如果您想“仅测试逻辑,OR和AND子句的创建方式”,则可以使用模拟方法检查创建方式,但是您应该至少对方法进行一次集成测试:规范build(),其标准数量最多appendOr,appendAnd ....
举例来说:这是spring-data如何测试代码的例子:
使用模拟的单元测试: https : //github.com/spring-projects/spring-data-jpa/blob/master/src/test/java/org/springframework/data/jpa/repository/query/SimpleJpaQueryUnitTests.java
和集成测试: https : //github.com/spring-projects/spring-data-jpa/blob/master/src/test/java/org/springframework/data/jpa/repository/query/JpaCountQueryCreatorIntegrationTests.java
有两种类型的测试和乳清专用于不同的情况。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.