2017-05-10 17 views
-1

私はRobolectric 3.3.2とPowerMockを使用して、最終クラスの単体テストをテストしています。PowerMockが最終クラスの初期化に失敗しました

@RunWith(RobolectricTestRunner.class) 
@Config(sdk = 23) 
@PrepareForTest({ FinalClass.class}) 
public class FragmentTest { 

    private TestFragment mFragment; 
    private TestActivity mActivity; 

    private FinalClass mFinalClassMock; 

    @Before 
    public void setUp() throws Exception{ 

     mFinalClassMock = PowerMockito.mock(FinalClass.class); 
     PowerMockito.whenNew(FinalClass.class).withAnyArguments() 
        .thenReturn(mFinalClassMock); 
     mActivity = Robolectric.buildActivity(TestActivity.class) 
          .create().start().resume().get(); 
     mFragment = new TestFragment(); 

    } 
} 

は、次の例外を除いて失敗しています。

java.lang.IllegalArgumentExceptionが:でorg.mockito.cglib.proxy.Enhancer.generateClass(Enhancer.java:447) で、最終的なクラスのクラスcom.android.contacts.common.preference.ContactsPreferences をサブクラス化することはできませんorg.mockito.cglib.core.DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy.java:25) at org.mockito.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:217) at org.mockito.cglib.proxy.Enhancer。 createHelper(Enhancer.java:378) at org.mockito.cglib.proxy.Enhancer.createClass(Enhancer.java:318) at org.powermock.api.mockito.repackaged.ClassImposterizer.createProxyClass(ClassImposterizer.java:123)(ClassMemory)。 org.powermock.api.mockito.PowerMockito.mockでpowermock.api.mockito.internal.mockcreation.MockCreator.mock(MockCreator.java:59) (PowerMockito.java:143)

私が使用していますJUNIT 4.12およびPowermock 1.6.4。 junitとpowermockのバージョンを別の投稿で提案されているように変更しましたが、成功しませんでした。 誰も最近この問題に直面しましたか?クラス内のルールを追加する

+0

を修正しているようです。しかし、どちらも必要な '@ RunWith'または' @ PrepareForTest'アノテーションを忘れてしまったと思います。 –

+0

@RunWith(RobolectricTestRunner.class)と@PrepareForTest({FinalClass.java})があります。申し訳ありませんが、現在のフォームにコードを投稿することはできません。 – jsam

+0

デバッグヘルプ(「なぜこのコードは動作しませんか?」)には、目的の動作、特定の問題またはエラー、および質問自体に再現するのに必要な最短コードが含まれている必要があります。明確な問題文がない質問は、他の読者にとって有用ではありません。参照:[mcve]を作成する方法 – GhostCat

答えて

0

は、私は、全体のコードを見ることなく決定的な答えを与えることができない問題に

@Rule 
public PowerMockRule rule = new PowerMockRule(); 
関連する問題