如何在测试中以不同方式模拟具有相同参数的静态方法?

时间:2017-03-27 05:53:37

标签: java unit-testing mocking powermock

这似乎不太可能,但有没有办法以某种方式模拟静态方法,第二次以另一种方式模拟静态方法?

案例场景 -

$ruby s3493188_p3.rb --api-key="abC9hsk9"
ERROR: "s3493188_p3.rb execute" was called with no arguments
Usage: "s3493188_p3.rb [keyword] --format oneline --no-country-code --api-key=API-KEY"

测试以下列方式编写。

if(StringUtils.isEmpty("")) {
   throw Exception();
}
...
if(StringUtils.isEmpty("")) {
   doSomething();
}

1 个答案:

答案 0 :(得分:1)

你不应该使用 mocking 来控制这样的“内部”。

通过控制到达静态调用的字符串值,您可以轻松控制被测代码的功能。你希望测试真实;然后编写一个推入空字符串的测试;这需要例外。

你有另一个不应该抛出的生产代码方法 - 然后写另一个测试;并做必要的设置。

但是开始嘲笑这样的方法。如果您认为必须这样做,那么您的设计是不可测试的;换句话说:破碎!修复你的设计,而不是使用大嘲笑锤!