我有一个带有一些静态方法的类。我需要模拟这些静态方法。我知道 PowerMock 可以做到这一点,但我找不到任何教程/材料来阐明“Spock + PowerMock”集成。与 Junit 相比,我更喜欢 Spock,因此出现了难题。有没有办法让这两个框架发挥作用?非常感谢任何帮助。示例代码,更是如此。
Update:该方法的现状
史波克行为怪异 https://stackoverflow.com/questions/19509696/spock-behaving-weirdly
我也被困在这里一段时间了。经过几个小时的搜索,我看到了这个 github 存储库:https://github.com/kriegaex/Spock_PowerMock https://github.com/kriegaex/Spock_PowerMock.
我尝试添加一个 PowerMockRule,它本质上使我能够将 PowerMock 与 Spock 一起使用。我必须添加这些依赖项。版本为 1.5.4
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-module-junit4</artifactId>
<version>${powermock.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-module-junit4-rule</artifactId>
<version>${powermock.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-classloading-xstream</artifactId>
<version>${powermock.version}</version>
<scope>test</scope>
</dependency>
我的班级是这样的:
import org.junit.Rule
import org.mockito.Mockito
import org.powermock.api.mockito.PowerMockito
import org.powermock.core.classloader.annotations.PrepareForTest
import org.powermock.modules.junit4.rule.PowerMockRule
import spock.lang.Specification
@PrepareForTest([SomeStaticClass.class])
public class FlightFormSpec extends Specification {
@Rule PowerMockRule powerMockRule = new PowerMockRule();
def "When mocking static"() {
setup :
PowerMockito.mockStatic(SomeStaticClass.class)
when :
Mockito.when(SomeStaticClass.someStaticMethod()).thenReturn("Philippines!");
then :
SomeStaticClass.someStaticMethod() == "Philippines!"
}
}
这是另一个资源:https://github.com/jayway/powermock/wiki/powermockrule https://github.com/jayway/powermock/wiki/powermockrule
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)