![](/img/trans.png)
[英]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.