異なる実装と実行時設定でテストする必要がある汎用コードベースがあります。複数のDAO実装でサービスを考える私はDaoインターフェースをテストする一般的な単体テストを持っています(私はDAOをautowiredにする必要があります)、これらを別のプロジェクトから呼び出す必要があります。異なるプロジェクトで複数のSpringコンテキストを持つJUnitテストを実行する
本質的に私はこのようなものが欲しいです。 共有された汎用プロジェクトでは、私のテストは生きるでしょう。 したがって、共有プロジェクトでは、たとえば、私のテストがあります。
public class ApiTest {
@Autowired
DaoBase myDao;
@Test
public void testSomething(){
}
}
はその後ダオを実装し、他のプロジェクト(複数可)に、私が持っているでしょう:
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = { ImplementationConfigA.class })
public class ImplemtationTesterA {
//somehow invoke ApiTest.class?
}
。
@Configuration
public class ImplementationConfigA{
@Bean
DaoBase daoBase {
return new DaoImplementationGraphDB();
}
}
は再び、さまざまな方法でDAO層を実装する複数のプロジェクトがある、と私は、一般的なテストを共有したいです。
@RunWith(SpringJUnit4ClassRunner.class)と@RunWith(Suite.class)を組み合わせることができれば、私の望むものと同じになりますが、それは可能ではないようです。すなわち、これは不可能である、私が欲しいものを効果的に次のようになります。
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = { ImplementationConfigA.class })
@RunWith(Suite.class)
@Suite.SuiteClasses({ ApiTest.class })
public class ImplemtationTesterA {
...
任意のアイデア...この作業のようなものを得るためにトリックがあるように持っていますか?ありがとう!
私はプロファイルを使用してこの問題を解決するとは思わない。つまり、ImplementationTesterAから、ApiTestクラスのすべてのテストをImplementationConfigAで指定されたコンテキストで実行する必要があります。言い換えれば、SpringのSpringJUnit4ClassRunnerは、少なくとも私が見つける限り、@RunWith(Suite.class)および@ Suite.SuiteClasses({ApiTest.class})と同等のメカニズムを提供しません。 – crig
しかし、プロファイルを使って同じことを達成することができます。これは実行するテストセットのタグのようなものです。 –
しかし@RunWith(SpringJUnit4ClassRunner.class)と@RunWith(Suite.class)を組み合わせることはできません。ですから、SpringテストクラスImplemtationTesterAから、ApiTestクラス(別のプロジェクトにあります)のすべてのテストを実行するにはどうすればよいですか? ApiTestにはAPIの一般的なテストがあり、これらの実装のさまざまな実装や設定は認識されていません。それが知っていることは、インタフェースのインプリメンテーションが注入されることを期待することだけです。私は、複数の実装がこれらの共有テストを使用できるようにしたいと思います。 – crig