【问题标题】:junit test for method instantiation vs class level instantiation方法实例化与类级实例化的junit测试
【发布时间】:2013-11-12 00:25:01
【问题描述】:

代码发布在link

现在,当我尝试编写 junit 时 第一种情况我收到错误

“需要重播B类”。

但同样的 junit 正在为第二种情况工作。

我的junit是

@RunWith(PowerMockRunner.class)
public class TestClass {

    @Test
    public void testDoSomeThing() {
        B b = createMock(B.class)
        expectNew(b.CallMe()).andReturns(xxx)
        A a=new A();

        replayAll();
        a.doSomething();
        verifyAll();
    }
}

【问题讨论】:

  • 你能发布你的 JUnit 测试吗?
  • 你在哪里看到这个错误?那是你得到的确切字符串吗?
  • @all 粘贴了我的 junit 类
  • 在此处发布之前格式化您的代码,帮自己一个忙。
  • java.lang.IllegalStateException: 必须重播类 xxxx 以获得配置的期望。在 org.powermock.api.easymock.internal.invocationcontrol.NewInvocationControlImpl.invoke(NewInvocationControlImpl.java:60) 在 org.powermock.core.MockGateway.newInstanceCall(MockGateway.java:169) 这是我得到的确切堆栈跟踪

标签: java unit-testing junit junit4 powermock


【解决方案1】:

这是使用EasyMockPowerMock 的解决方案:

TestClass.java

import org.junit.Test;
import org.junit.runner.RunWith;
import org.powermock.api.easymock.PowerMock;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;

@RunWith(PowerMockRunner.class)
@PrepareForTest({ A.class, B.class })
public class TestClass {

    @Test
    public void testDoSomeThing() throws Exception {
        /* Setup */
        B bMock = PowerMock.createMock(B.class);

        /* Mocks */
        PowerMock.expectNew(B.class).andReturn(bMock).atLeastOnce();
        bMock.callMe();

        /* Activate */
        PowerMock.replayAll();

        /* Test */
        A cut = new A();
        cut.doSomething();

        /* Asserts */
        PowerMock.verifyAll();
    }
}

A.java

public class A {

    B b = new B();

    public void doSomething() {
        b.callMe();
    }
}

B.java

public class B {

    public void callMe() {

    }
}

【讨论】:

  • 像魅力一样工作。非常感谢。
【解决方案2】:

你忘了添加

@PrepareForTest({A.class, B.class})

此注解必须包含您要模拟的类以及将使用这些模拟的类。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-25
    • 1970-01-01
    • 2016-02-18
    相关资源
    最近更新 更多