单元测试的问题是同一集合在流和 for 循环中的处理方式不同。两种情况下的集合都是空的(data.size() = 0),但在情况 1 中,该集合以某种方式进行了处理,换句话说,它将进入 for 循环。在情况 2 中,该集合只是被跳过(这是预期的,因为它是空的)。
测试使用 Mockito,并将Result<Record>用于 JOOQ。
测试是旧的并且没有变化,唯一的变化是从 for 循环到流。
情况1
private SearchResult iterateData(
Result<Record> data, ...) {
for (Record record : data) {
doSomething(record);
}
Run Code Online (Sandbox Code Playgroud)
案例2
private SearchResult iterateData(
Result<Record> data, ...) {
data.stream().forEach(record -> doSomething(record));
Run Code Online (Sandbox Code Playgroud)
案例 1 for 循环示例的屏幕截图
模拟结果对象
private DefaultSearchRequestModel rowSpecificValuesTestSetup(
parameters...) {
DefaultSearchRequestModel searchRequest = new DefaultSearchRequestModel(
Arrays.asList(....),
Collections.singletonList(
new SearchFilter(
"test",
Collections.singletonList(...)));
List<Column> columns =
this.searchService.filterUserAllowedColumns(...);
Condition searchCondition =
this.searchRepositoryMock.getSearchConditions(...);
List<TableJoinMapping> joinMappings = …Run Code Online (Sandbox Code Playgroud) 请帮助编写Junit接口默认方法.
public interface ABC<T, D, K, V> {
default List<String> getSrc(DEF def, XYZ xyz) throws Exception {
}
}
Run Code Online (Sandbox Code Playgroud)
ABC:接口名称.DEF和XYZ:类名