私は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のバージョンを別の投稿で提案されているように変更しましたが、成功しませんでした。 誰も最近この問題に直面しましたか?クラス内のルールを追加する
を修正しているようです。しかし、どちらも必要な '@ RunWith'または' @ PrepareForTest'アノテーションを忘れてしまったと思います。 –
@RunWith(RobolectricTestRunner.class)と@PrepareForTest({FinalClass.java})があります。申し訳ありませんが、現在のフォームにコードを投稿することはできません。 – jsam
デバッグヘルプ(「なぜこのコードは動作しませんか?」)には、目的の動作、特定の問題またはエラー、および質問自体に再現するのに必要な最短コードが含まれている必要があります。明確な問題文がない質問は、他の読者にとって有用ではありません。参照:[mcve]を作成する方法 – GhostCat