Robolectricで実行したいテストがいくつかあります。RobolectricはAppCompatテーマを見つけることができなかったため、2.3-SNAPSHOTバージョンを使用するために必要なActionbarCompat iを使用するため、2.3-SNAPSHOTを使用します。だから私はEclipseでクラスパスを設定し、これで終わります:
Java.lang.UnsupportedOperationException: Robolectric does not support API level 9, sorry!
at org.robolectric.SdkConfig.<init>(SdkConfig.Java:24)
at org.robolectric.RobolectricTestRunner.pickSdkVersion(RobolectricTestRunner.Java:288)
at org.robolectric.RobolectricTestRunner.getEnvironment(RobolectricTestRunner.Java:264)
at org.robolectric.RobolectricTestRunner.access$100(RobolectricTestRunner.Java:57)
at org.robolectric.RobolectricTestRunner$2.evaluate(RobolectricTestRunner.Java:186)
at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.Java:79)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.Java:71)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.Java:49)
at org.junit.runners.ParentRunner$3.run(ParentRunner.Java:193)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.Java:52)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.Java:191)
at org.junit.runners.ParentRunner.access$000(ParentRunner.Java:42)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.Java:184)
at org.robolectric.RobolectricTestRunner$1.evaluate(RobolectricTestRunner.Java:172)
at org.junit.runners.ParentRunner.run(ParentRunner.Java:236)
at org.Eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.Java:50)
at org.Eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.Java:38)
at org.Eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.Java:467)
at org.Eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.Java:683)
at org.Eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.Java:390)
at org.Eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.Java:197)
私のテストプロジェクトのマニフェストは次のとおりです。
<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
package="com.vendor.test"
Android:versionCode="1"
Android:versionName="1.0">
<application>
<uses-library Android:name="Android.test.runner" />
</application>
<uses-sdk Android:minSdkVersion="19" Android:targetSdkVersion="19" />
<instrumentation Android:name="Android.test.InstrumentationTestRunner"
Android:targetPackage="com.vendor" />
</manifest>
使用するものに関係なく、私は常にAPIレベルについて不平を言います。
誰もこれを機能させましたか?
更新:注釈は@Config(sdk = 18)
(または@Config(sdk = Build.VERSION_CODES.JELLY_BEAN_MR2)
)になり、リンクに記載されているプロパティファイルはrobolectric.properties
。
元の回答:@Config
注釈は、RobolectricにSDKバージョンをエミュレートさせます。これを置くことができます:
import org.robolectric.annotation.Config;
@Config(emulateSdk = 18) // now @Config(sdk = 18) as of Robolectric 3.0
@RunWith(RobolectricTestRunner.class)
public class SomeTest ...
前述のファイルを使用してこれも可能です here
KitKat固有のテストの意味がわかりませんが、少なくとも他のテストは動作するはずです。
私のような人が、同様のエラーのリンクにまだアクセスしている場合、
@Config(emulateSdk = )
は現在動作していません。そのSDKに変更-@Config(constants = BuildConfig.class, sdk=21)
私にとっては、ターゲットバージョン22でエラーが発生していました
Java.lang.UnsupportedOperationException: Robolectric does not support API level 22
そして、私はそれを21にエミュレートしました。
SdkConfig.Java によると、Roboelectricは次のバージョン/ APIレベルのみをサポートしています。
SUPPORTED_APIS.put(Build.VERSION_CODES.JELLY_BEAN, new SdkVersion("4.1.2_r1", "0"));
SUPPORTED_APIS.put(Build.VERSION_CODES.JELLY_BEAN_MR1, new SdkVersion("4.2.2_r1.2", "0"));
SUPPORTED_APIS.put(Build.VERSION_CODES.JELLY_BEAN_MR2, new SdkVersion("4.3_r2", "0"));
SUPPORTED_APIS.put(Build.VERSION_CODES.KitKat, new SdkVersion("4.4_r1", "0"));
SUPPORTED_APIS.put(Build.VERSION_CODES.Lollipop, new SdkVersion("5.0.0_r2", "0"));
これらを試したことがありますか?