使用PowerMock.expectNew()方法无法获得代码覆盖范围



我正在尝试示例以模拟以下链接中提供的构造函数

https://github.com/powermock/powermock/wiki/mockconstructor

尽管Junit Run通过了,但是PersistenceMemanager类的代码覆盖报告为零%。

这是因为@preparefortest(persistencemanager.class),没有此行,代码失败了。

如何模拟构造函数调用并获得100%的代码覆盖范围。

您可能不这样做。或者您需要幸运。

我的意思是:powermock(ito)的自然更改您的字节。换句话说:您的单元测试是(可能)不是运行Javac/您的IDE编译的类文件。为了做黑魔法,PowerMock会在加载时更改您的类文件内容。

不幸的是,代码覆盖工具可以使用相同的方式 - 他们需要 instrument 类文件内容以执行其零件。

因此,使用PowerMock会导致"零覆盖范围"时,根本不应该感到惊讶。有时它有效,有时它不起作用。而且真正糟糕的部分是:您可能会有一个非常的时间来找到解决该特定问题的解决方案。周围有各种错误,例如这个错误;如所说:有时它有效,有时行不通。很大程度上取决于您在做什么;以及您正在使用的框架。

因此,基本的非答案 - 研究您使用PowerMock的需求。您会发现,您只是简单地编写了不可测试/难以测试的生产代码。现在,您认为您需要大型PowerMock锤子来解决代码中的 Design 问题。相反:例如,通过观看这些视频来了解如何创建可测试代码。然后重新结构您的生产代码,并摆脱PowerMock。我做了很多月前做的。而且我从未后悔过一秒钟。现在,我依靠easymock/mokito ...和代码覆盖范围只是为我工作

相关内容

  • 没有找到相关文章

最新更新