我是测试用例的新手,我尝试了几种方法来为下面的代码编写测试用例,但从未成功。如何使用Powermockito为下面的代码编写junit测试用例?
StreamSupport.stream(irSet.spliterator(), false)
.filter(iResultRow -> iResultRow !=null)
.mapToInt(iResultRow ->{
String event = iResultRow.get("STF_TY_GH");
return StringUtils.isNotBlank(event) ? Integer.parseInt(event) : 1;
}).findFirst().orElse(1);
答案 0 :(得分:3)
尽管使用大量模拟可以模拟每个调用,但我还是建议您使用另一种方法。
因此,您将有一些输入集(irSet
)变量产生的流。该流进行“某些”处理并返回整数结果。
因此,如果您“想象”它是一个黑匣子:一种看起来像这样的功能:
int doSomething(Set<SomeRow> irSet) {
... your implementation is here...
}
在这种情况下,您可能想要通过提供各种输入集并期望一些输出来测试其功能。如果输入中有null
-怎么办?它会失败还是过滤掉需要的东西。如果集合为空怎么办?如果确实有SomeRow
个数据的STF_TY_GH
怎么办,如果集合中没有这样的行怎么办?
这里是一个测试,例如:
@Test
public void test_rows_with_null_are_processed_correctly() {
// setup:
Set<SomeRow> input = ...// prepare a set with null values
// when:
Integer actual = underTest.doSomething(input)
// then:
// verify this "actual" whether it should be 1 or something else
}
全部,仅将模拟用于交互(使用您无法真正实例化的东西,例如DB API /远程HTTP调用)或与测试的代码无关的东西,并将其用作测试的依赖项代码进行交互。毕竟,单元测试的目标是测试您的代码(在这种情况下,doSomething
的实现而不是模拟所有内容)。