JUnitテストを実行すると、initializationError:一致するテストが見つかりませんでした。このような:
prodapi-main-junit
initializationError(org.junit.runner.manipulation.Filter)
Java.lang.Exception: No tests found matching [{ExactMatcher:fDisplayName=testCreateSite], {ExactMatcher:fDisplayName=testCreateSite(com.company.product.api.web.rest.HostControllerTest)], {LeadingIdentifierMatcher:fClassName=com.company.product.api.web.rest.HostControllerTest,fLeadingIdentifier=testCreateSite]] from org.junit.internal.requests.ClassRequest@3c0f93f1
at org.junit.internal.requests.FilterRequest.getRunner(FilterRequest.Java:40)
at org.Eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createFilteredTest(JUnit4TestLoader.Java:77)
at org.Eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.Java:68)
at org.Eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.Java:43)
at org.Eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.Java:444)
at org.Eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.Java:675)
at org.Eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.Java:382)
at org.Eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.Java:192)
テストコードは次のとおりです。
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = ProductApplication.class)
@WebAppConfiguration
public class HostControllerTest{
@Test
public void testCreateSite() throws Exception {
......
}
}
クラスをロードして問題なく実行できるはずです。このモジュールに似た他のモジュールがありますが、実行しても問題ありません。
考えられる原因を確認しました。
このようなJunitテストエラーが発生する可能性のあるものが他にあるかどうかはわかりません。クラスローダーを確認する必要がありますか?
いくつかの答えをググった後。次のようにこのケースについて話している問題があることがわかりました: https://github.com/junit-team/junit4/issues/1277 (FilterRequestはテストの実際の失敗の原因(例外)を隠します)私が試した手順は次のとおりです:
1。テスト機能のみを選択しないでください。一方、[テスト]タブで[選択したプロジェクトのすべてのテストを実行]オプションを選択し、[実行]-> [実行(デバッグ)構成]をクリックしてJunitプロジェクト名を選択します
2。次のようにしてエラーの詳細を取得できます。
initializationError(com.company.product.api.web.rest.HostControllerTest)
Java.lang.Exception: Method testSetDBConfiguration should have no parameters
at org.junit.runners.model.FrameworkMethod.validatePublicVoidNoArg(FrameworkMethod.Java:76)
at org.junit.runners.ParentRunner.validatePublicVoidNoArgMethods(ParentRunner.Java:155)
3.上記のEclipseによって与えられた詳細に従って、私はその関数の引数を削除しました。initializedErrorはちょうど消えました。
そのため、新しく追加されたテスト関数に不要な入力引数があるため、この問題が発生します。間違ったコード:
@Test
public void testSetDBConfiguration(String name) throws Exception {
に変更
@Test
public void testSetDBConfiguration() throws Exception {
私は同様の問題を抱えていましたが、後で、メインのスプリングブートアプリケーションの構成が、テストクラスを含むパッケージをスキャンしていないことに気付きました。
メインクラスはパッケージをスキャンしていました-{"com.mycmp.prj.pkg1"、 "com.mycmp.prj.pkg2"、 "com.mycmp.dependentprj.pkg5"}
テストクラスはパッケージにありました-com.mycmp.prj.pkg3
現在のプロジェクトからすべてのパッケージをスキャンし、依存ライブラリから限られた必要なパッケージのみをスキャンするようにベースパッケージを修正することで問題が修正されました
@SpringBootApplication(scanBasePackages = {"com.mycmp.prj.pkg1"、 "com.mycmp.prj.pkg2"、 "com.mycmp.dependentprj.pkg5"})パブリッククラスMyApplication extends SpringBootServletInitializer {
public static void main(final String[] args) {
SpringApplication.run(MyApplication.class, args);
}
@Override
protected SpringApplicationBuilder configure(final SpringApplicationBuilder application) {
return application.sources(MyApplication.class);
}
@Bean
public FilterRegistrationBean<Filter> customFilters() {
final FilterRegistrationBean<Filter> registration = new
FilterRegistrationBean<>();
final Filter myFilter = new ServicesFilter();
registration.setFilter(myFilter);
registration.addUrlPatterns("/myurl1/*", "/myurl2/*");
return registration;
}
@PostConstruct
public void started() {
//
}
}
**package com.mycmp.prj.pkg3;**
import static org.junit.Assert.assertNotNull;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import com.mongodb.MongoClient;
@RunWith(SpringRunner.class)
@SpringBootTest(classes = MyApplication.class)
public class MongoConfigStoreTest {
@Test
public void testConnection() throws Exception {
final MongoClient client = new MongoClient("localhost", 127027);
assertNotNull(client);
assertNotNull(client.getDatabase("localhost"));
}
}