问题标签 [powermock]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 使用 PowerMock 模拟来自多个类的静态方法
我知道如何使用 PowerMock 从类中模拟静态方法。
但我想使用 JUnit 和 PowerMock 在测试类中模拟来自多个类的静态方法。
谁能告诉我是否有可能做到这一点以及如何做到这一点?
maven - 未找到 Maven 测试依赖项
我声明了一个对 powermock 的测试依赖,其中包含了 easymock。
当我运行mvn test
时,测试 src 声称能够找到org.powermock
但不能org.easymock
,尽管它包含在上述依赖项中。
我想知道这是否是由于测试范围的传递性造成的问题,所以我也尝试了编译范围(因为文档http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html
提到编译依赖项在测试时可用)没有任何运气。
我也尝试过使用捆绑的 jar 而不是 pom,但无济于事。我意识到我可以单独声明依赖项(即 powermock 和 easymock 的单独依赖项),但出于我的目的,我仅限于一个依赖项,包括所有必要的测试库。
java - 当从第三个(插件)引用时,Powermock 导致 Eclipse 中 JUnit Plugin-Test 的 ClassNotFoundException
我正在 Eclipse 中编写 JUnit-Tests 来测试没有 Maven的 RCP-Eclipse-Application 。对于某些测试用例,必须使用 Powermock(使用 Easymock)来模拟对象创建和静态方法。
我有一个包含应该是 testet 的类的插件和包含相应测试的第二个插件。让我们捐赠它们 PluginObject 和 PluginTest:
工作情况:
使用 PLuginTest 中带有 powermock-Jar 的配置,TestCase 和 Plugins-Manifest-Runtim 中的配置运行正常并返回所需的结果。
我的 TestCase 从以下几行开始,当前使用@RunWith -Annotation:
但是我有多个插件想要在我的应用程序中使用 Powermock 进行模拟,这对我来说将共享库提取到另一个特殊插件似乎是个好主意 - 我们称之为 Test.Util:
对于除 Powermock 之外的所有其他库,我没有任何问题,但是当我将 Powermock 从 PluginTest 移动到 Test.Util-Plugin 时,在启动 JUnit Plugin-Test 时初始化时出现“ClassNotFoundException”。(正常的 JUnit-Test 不会抛出此错误)
我在 MANIFEST.MF 的 Runtime 下的 Classpath 中配置了 Test.Util,并导出了这些插件的每个包。在 Eclipse 中,正确的库是从 TestCase 链接的。
我还使用带有 JUnit-Rule 而不是@RunWith的 Bootstrapping ,但它会导致相同的 ClassNotFoundException。问题没有改变。
我现在尝试了很多东西 - 重新配置插件测试的运行配置,在清单中设置 ClassPath: .\,延迟/非延迟加载以及为 PluginTest 和 Test.Util-Plugin 设置 Buddy-ClassLoading。
经过数小时的网络尝试和搜索,我仍然不知道为什么 Powermock 会导致此异常,如果它是从 Test-Plugin 提取到第三个插件中,以及我如何使这项工作正常工作。我目前不能说我的应用程序中是否有错误配置。
有谁遇到过相同或类似的问题,或者得到了很好的解决方案?
java - 使用 PowerMock、Mockito 和 TestNG 模拟公共方法中使用的私有方法
我想为我的课程编写单元测试。这个类有一个公共方法,在公共方法内部有对同一个类的私有方法的调用。我想模拟对那些私有方法的调用。该类与此类似:
对于我的单元测试,我正在尝试将 PowerMock 与 Mockito 和 TestNG 一起使用。这是我在测试 somePublicMethod 的测试中的尝试:
当我运行这个测试时,我得到一个异常和一些提示:
我在网上查看了一些示例,但我没有找到一个专门使用 PowerMock 和 Mockito 和 TestNG 来做我想做的事。有人可以给我一些关于我可以做些什么不同的指示吗?
java - 模拟 jdbc 数据源的困难
我想模拟一个 Datasource 和 InitialContext 以连接到容器外的数据库。这是我想使用模拟的逻辑:
这就是我进行的方式
问题:模拟不适用于 DataSource 它始终为空,但是 InitialContext 的模拟正在工作。
java - PowerMockito 模拟单个静态方法并返回对象
我想从一个包含 2 个静态方法 m1 和 m2 的类中模拟一个静态方法 m1。我希望方法 m1 返回一个对象。
我尝试了以下
1)
这同时调用了具有不同返回类型的 m1 和 m2,因此它给出了返回类型不匹配错误。
2)PowerMockito.when(Static.m1(param1, param2)).thenReturn(1000l);
但是在执行 m1 时不会调用它。
3)PowerMockito.mockPartial(Static.class, "m1");
给出 mockPartial 不可用的编译器错误,这是我从http://code.google.com/p/powermock/wiki/MockitoUsage 获得的。
java - Java测试验证构造函数
我试图找出一种方法来通过以下方式验证类构造函数(请记住,这是一个理论示例)
我想验证构造函数调用 addItem 一次与 any(RoundItem.class) 并一次与 any(SquareItem.class)。我似乎找不到用 PowerMock 或 Mockito 以这种方式验证构造函数的好方法。有任何想法吗?
java - 从子类外部访问父类的受保护方法(使用反射或任何可行的方法)
我四处寻找没有运气的解决方案,这就是我所拥有的以及我正在努力实现的目标
家长班
儿童班
我正在尝试调用MyChlidClass
'setField
方法,然后调用MyAbstractParentClass
'protected String getPrivateParentField()
后记;
但是上面的这段代码只返回MyChlidClass
没有父类的声明方法protected
,我怎么能访问受保护的方法?有任何想法吗?
非常感谢你:)
编辑 这是感兴趣的人的最终解决方案
PS:有一些例外你可以捕捉或添加它们的抛出声明;
再次感谢您的帮助
java - 动态更改模拟对象返回值
假设我有以下方法:
现在我想传入一个SomeIterator
Mock 对象,该对象将返回Boolean.TRUE
以进入循环,但我也希望它Boolean.FALSE
在某个时候返回(例如在 10 次之后),有没有办法通过 PowerMock/ 实现这一点易模?
在此先感谢您的帮助。
java - 包含 PowerMock 的生成代码测试
我最近遇到了一个障碍。我正在编写一些单元测试来锻炼我负责代码生成的库的某些部分。代码接受配置对象的输入,使用 CodeModel 编写代码,将这些类转储到 String,然后使用 Java 6 编译器 api 将它们即时编译成可用的类。
我遇到的障碍是我在生成的代码中测试的方法之一,它使用具有最终方法的类(Android Bundle)并在使用时抛出异常(“java.lang.RuntimeException:Stub!”)。因此,为了解决这个问题,我使用 PowerMock 来模拟最终方法。但是,在这种情况下,编译器 API 会引发 NPE。我认为这是因为 PowerMock 在幕后使用的设施,但我不确定。
这是一个例外:
内存文件管理器.java:
MemoryClassLoader.java(使用 MemoryFileManager):
一个非常基本的测试证明了这个问题: