私が使っていた私のインストルメンテーションテストのために
@RunWith(AndroidJUnit4.class)
から
import androidx.test.runner.AndroidJUnit4;
私のテストケースを確立するために。これで、この行はAndroidJUnit4
を使用するヒントで非推奨としてマークされます。
import androidx.test.ext.junit.runners.AndroidJUnit4
しかし、名前付きパッケージからAndroidJUnit4
をインポートしようとすると、エラーが発生します。そのext
は解決できません。
この問題を解決するために、どのパッケージをgradleに含めるべきか、という考えがありますか。
AndroidJUnit4のドキュメント によると、gradleファイルには次の行が含まれているはずです。
androidTestImplementation 'androidx.test.ext:junit:1.1.0'
これを追加した後、すべてが私のために働きました。
それでもうまくいかない場合は、必ずプロジェクトをクリーンアップまたは再構築してください。
私にとっては、次の手順が機能しました:
1。 androidxライブラリを here に投稿されたライブラリに置き換えます。最終的なapp/build.gradle
は次のようになりました。
Android {
...
defaultConfig {
...
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
...
}
dependencies {
...
testImplementation 'junit:junit:4.12'
// Core library
androidTestImplementation 'androidx.test:core:1.2.0'
// AndroidJUnitRunner and JUnit Rules
androidTestImplementation 'androidx.test:runner:1.2.0'
androidTestImplementation 'androidx.test:rules:1.2.0'
// Assertions
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.ext:truth:1.2.0'
androidTestImplementation 'com.google.truth:truth:0.42'
// Espresso dependencies
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
}
次に、ExampleInstrumentTest.Java
クラスのインポートされたモジュールを手動で最新のクラスに置き換えました。
import androidx.test.internal.runner.junit4.AndroidJUnit4ClassRunner;
import androidx.test.platform.app.InstrumentationRegistry;
import androidx.test.rule.ActivityTestRule;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
@RunWith(AndroidJUnit4ClassRunner.class)
public class ExampleInstrumentedTest {
...
@Rule
public final ActivityTestRule<MainActivity> main = new ActivityTestRule<>(MainActivity.class, true);
@Before
public void init() {
...
}
@Test
public void listCount() {
...
}
@Test
public void useAppContext() {
Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
Assert.assertEquals("in.curioustools.aad_x_testing2", appContext.getPackageName());
System.out.println("useAppContext : Test Ran");
}
}
私を悩ませていたのは、InstrumentationRegistery
クラスがまだ推奨されていないという事実でした。そこで、androidx.test.platform.app.InstrumentationRegistry
クラスのInstrumentationRegistry.getInstrumentation().getTargetContext();
クラスを使用しました。
@ MarcelGangwischのソリューションを試してもビルドが失敗してリソースが見つからず、プロジェクトもクリーンアップ/再構築してもまだうまくいかない場合は、これを試してください。
依存関係を変更したgradleファイルで、必要なタイプとしてそれを追加していることを確認してください。
UIテストの場合
androidTestImplementation 'androidx.test.ext:junit:1.1.0'
単体テストの場合:
testImplementation 'androidx.test.ext:junit:1.1.0'
私の例では、私は両方としてそれを追加しました、そして今それは機能します。
私の場合はandroidTestImplementation
をtestImplementation
に変更することが役に立ちました。私はこれを読む前に違いを知りませんでした build.gradleのtestImplementationとandroidTestImplementationのAndroidの違い
私が公式のAndroidサイトにアクセスするまで上記のすべてを試してみたところ、彼らはandroidx.test.ext.junit.runners.AndroidJUnit4
の代わりにandroidx.test.runner.AndroidJUnit4
からインポートすることを提案しました。 リンク