web-dev-qa-db-ja.com

Android Studio-Kotlin Tests Throwing-Class not found-Empty test suite

Android Studio(3.2 Canary 9まで)のスタジオでKotlinで記述されたエスプレッソテストを実行しようとすると、次のエラーが発生します:プロセスが終了コード1で終了しましたクラスが見つかりません: "com。 myproject.directoryofwinning.VerifyAppIsAwesomeTest "空のテストスイート。

不思議なことに、Java同じプロジェクトでのテストに問題はありません。

設定をリセットしようとし、他の人から提案されましたが、これは何の違いもないようです。

15
user1228891

結局、クラス名の最後に「テスト」が追加されていることがわかりました。 Word Testをクラス名の前に移動するか、すべて一緒に省略すると、問題が解決します。

4
user1228891

Android Studio 3.1.1を使用している場合、おそらくRun = Debug設定が正しくありません。おそらくAndroid Studio 。最終的に、「Android Instrumented Tests」ではなく、「Android JUnit」configsの下にインストゥルメントテスト構成が配置されました。特定のクラスの新しいインストゥルメントテスト構成の作成が機能しました。

また、モジュールの[すべてのテストを実行]オプションを右クリックしたときに作成されたデフォルトの構成が、インストルメント化されたテストを見つけて正しく実行できず、結果として

0 test classes found in package '<default package>' 
Process finished with exit code 254 
Empty test suite.

Android JUnitの下に作成されたデフォルトの構成として。ただし、インストルメント化されたテストを含むパッケージを右クリックすると、適切なカテゴリに作成されます。手動で「モジュール内のすべて」に編集することもできます。 'そして、私のkotlinテストを適切に実行します。

余談ですが、私はIDE以前に次の誤解を招くような出力をしてくれました:

$ adb Shell am instrument -w -r   -e package com.base.package.kotlintests -e debug false com.base.package.test/Android.support.test.runner.AndroidJUnitRunner
Client not ready yet..
Started running tests
Tests ran to completion.
Empty test suite.

なぜ私がテストを持っているのか、なぜ空のテストスイートがあると言ったのですか?ログを見るか、ターミナルでadbコマンドを実行すると、私のコードが@BeforeClassのセットアップで例外をスローしていることがわかりました!したがって、テストは実行されず、すべてが簡単に完了しました。

4
qix

これを理解するのに数回の試行が必要でしたが、kotlinを有効にするために必要なGradleの変更がないことが原因でした。

....
apply plugin: 'kotlin-Android'
Android {
    ....
}
dependencies {
    implementation "org.jetbrains.kotlin:kotlin-stdlib:1.3.21"
    ....
}
2
mattfred

プロジェクトの再構築、[ファイル]> [キャッシュの無効化/再起動...]、app\buildフォルダーの削除、プロセスからのadbの削除、エミュレーターの再起動。

1
CoolMind