2017-08-25 12 views
0

私はmethodA、methodBの2つのメソッドを持つクラスのMockitoでJUnitテストケースを書いています。私はここでテスト中の同じクラスで別の静的メソッドをモックする方法はありますか?

私のテストcase.SomeにmethodBからmethodAへの呼び出しを模擬するために、1つのヘルプme.plsを希望するクラスです。

public Class Test{ 
    public static List<Object> methodA() { 
     ... 
     return list;  
    } 

    public static List<Object> methodB() { 
     ... 
     list = methodA(); 
     return list; 
    } 
} 
+0

メソッド呼び出しのすべての –

+1

まず模擬するために "" 使用...なぜ?なぜこの静的メソッドがありますか?それについて考える。再び。再び。この静的メソッドをモックする必要がある場合は、この静的メソッドが実際に依存関係にあるように聞こえ、簡単に嘲笑できるように、静的メソッドを使用して独自のクラスに移動する必要があります。静的メソッドをモックすることは、コードの臭いです(つまり、問題のコードが悪いことを示す可能性があります)。 –

答えて

1

あなたは、静的メソッドを模擬するためにPowerMockitoを使用する必要があります。

例:

package unitest; 

import java.util.ArrayList; 
import java.util.List; 

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

@RunWith(PowerMockRunner.class) 
@PrepareForTest(unitest.Test.class) 
public class TestTest { 

    @Test 
    public void testMethodB() { 
     PowerMockito.mockStatic(unitest.Test.class); 
     PowerMockito.when(unitest.Test.methodA()).thenReturn(new ArrayList()); 
     List b = unitest.Test.methodB(); 
     org.junit.Assert.assertNotNull(b); 
    } 

} 
関連する問題