2016-12-02 121 views

回答

0

你可能没有。或者你需要幸运。

我想说的是:PowerMock(ITO)的性质变化你的字节码。换句话说:你的单元测试是(可能)而不是运行javac /你的IDE编译的类文件。为了实现其黑魔法,PowerMock将在加载时更改您的课程文件内容。

不幸的是,代码覆盖工具以相同的方式工作 - 他们需要工具类文件的内容才能完成它们的部分。

因此,当使用PowerMock导致“零覆盖”时,不应该感到惊讶。有时它起作用,有时它不起作用。还有一个非常不好的部分:你可能需要很长的时间才能找到解决该问题的解决方案。对此有各种各样的错误,例如one;正如所说:有时它起作用,有时它不起作用。很大程度上取决于你在做什么;以及您正在使用的框架。

所以,基本的非答案 - 看看你需要使用PowerMock。你看,很可能你只是写了无法测试/难以测试的生产代码。现在你认为你需要PowerMock大锤来修复你的代码中的设计问题。相反:学习如何创建可测试代码,例如通过观看这些videos。然后重新构建您的生产代码,并摆脱PowerMock。我几个月前就是这么做的;而且我从来没有后悔过这么做。现在我依靠EasyMock/Mokito ...和代码覆盖只是为我工作