0

atgdustcase を拡張する TestNG テストケースを作成しています。クラス B のメソッドをモックする必要があります。このクラス B は、ATG のプロパティ ファイルを使用してクラス A に注入されます。クラス C は、クラス A の機能をテストするためのテスト クラスです。D は、AtgDustCase を拡張したテスト クラスです。

@RunWith(PowerMockRunner.class)
@PrepareForTest({A.class, B.class})
Public class c extends D{
    @InjectGlobalComponent(Path for component A)
    @InjectMocks
    private A aClass;
    public void testMethod(){
        String string = "abc";
        Map map = new HashMap();
        map.put("a", "c");
        aClass = getRequest.resolveName(Component A path);
        B b = PowerMockito.mock(B.class);
        A a = PowerMockito.spy(new A());
        PowerMockito.whenNew(A.class).withNoArguments().thenReturn(a);
        a.setB(B);
        PowerMockito.when(a.getB()).thenReturn(b);
        Mockito.stub(b.getMethodToMock(string)).toReturn(map);
        Mockito.verify(b).getMethodToMock(string);
        aClass.invokeTestMethod();// This method calls the b.getMethodToMock()
    }
}

getMethodToMock() をモックする必要があります。invokeTestMethod() を実行すると、getMethodToMock() が呼び出されます。その際、地図を返却する必要があります。代わりに getMethodToMock() を実行していて、エラーをスローしています (実行の問題は、DB からいくつかのレコードをフェッチする必要があることです。このメソッドをモックし、DB から取得した情報を含むマップを返す必要があります)。デバッグモードでは getMethodToMock() が呼び出されていることがわかるので、モッキングが適切に行われているかどうかはわかりません。このメソッドをモックして、このメソッドの実行をスキップする方法を教えてください。

注: Powermockito を使用してみましたが、私のテストケースは TestNGsuite です。Junit として実行する代わりに、TestNGSuite を実行する必要があります。

4

0 に答える 0