当前位置: 首页 > 知识库问答 >
问题:

使用PowerMock和Spock

武晨
2023-03-14

斯波克行为怪异

共有1个答案

呼延鹏云
2023-03-14

我也被困在这里一段时间了。搜索了几个小时后,我看到了这个github repo: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!"
    }
}
 类似资料:
  • 我正在尝试使用PowerMockito来模拟Android Robolectric测试中的一些静态方法。我使用的是JUnit 4.8.2、Robolectric2.2、Mockito 1.9.5和PowerMock 1.9.5。由于我必须使用RoboElectricTestRunner,所以我尝试使用PowerMockRule来引导PowerMock。然而,当使用PowerMock运行测试时,不幸

  • 问题内容: 我有以下要模拟的Logger,但要验证是否正在调用日志条目,而不是内容。 我想模拟用于LoggerFactory.getLogger()的任何类,但是我找不到如何做到这一点。到目前为止,这是我最终得到的结果: 我想知道: 我可以模拟静态模型以用于任何课程吗? 我只能似乎运行的,因此我似乎无法改变每个方法的特点。有没有解决的办法? 编辑结果: 我以为我已经尝试过了,但没有成功: 但是,谢

  • 我编写了一个JUnit测试,使用Mockito和PowerMock模拟一些类。我试图将其转换为cucumber测试,但静态的PowerMock特性不起作用。 两类相关cucumber的提取物: 虽然这段代码在JUnit测试中工作,但它在这里失败了--它进入了方法,该方法应该被模拟,然后通过在其中执行代码而失败。我试着加了几行: 对上述两个类(当然,我不能在类中使用,因为它已经有一个注释),但这不会

  • 问题内容: 我已经在JUnit中将PowerMock和PowerRule与Mockito集成在一起。 这是我的依赖项: 我的测试课是: 正在调用我需要模拟的静态方法。当我运行测试用例时,我得到。 全栈跟踪: java.lang.RuntimeException:javassist.NotFoundException:org.powermock.core.classloader.MockClassL

  • 我的测试类是: 调用了一个我需要模拟的静态方法。当我运行测试用例时,我得到。 全堆栈跟踪: 我甚至尝试过javassist Version15,但也有同样的问题。

  • 当在eclipse中运行一个junit4测试案例时,它作为一个独立的应用程序运行得很好,我得到以下堆栈跟踪。 我的测试用例使用了以下注释 我如何告诉它忽略URLClasLoader?