0

コードは リンクに掲載されています

今、最初のケースでjunitを書き込もうとすると、エラーが発生します

「クラスBを再生する必要があります」。

しかし、同じjunitが2番目のケースで機能しています。

私の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();
    }
}
4

2 に答える 2

1

PowerMockEasyMockを使用したソリューションは次のとおりです。

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() {

    }
}
于 2013-11-11T16:25:01.470 に答える
0

追加するのを忘れた

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

この注釈には、モックしているクラスと、これらのモックを使用するクラスが含まれている必要があります。

于 2013-04-20T09:59:06.160 に答える