Bean Configurationなしでこれを行う別の方法は考えられません。
まず:あなたは2つの方法でこれを設定することができ
@Configuration
public class AppConfig {
@Bean
public ClassB classB() {
return new ClassB() {
// this is a subclass that inherits everything from ClassB, so override what you want here
}
}
}
第二:(hereから取られた)
@RunWith(SpringRunner.class)
@SpringBootTest
public class SomeTest {
// do this if you only want the modified classB in 1 place
@Configuration
static class TestConfig {
@Bean
public ClassB classB() {
return new ClassB() {
// same as the first
}
}
}
@Test
public void testMethod() {
// test
}
}
最後に、あなたは新しいインターフェイスを作成することもできますメインフォルダにClassB
とClassBImpl
、ClassBTestImpl
をテストフォルダに追加します。それでも設定の1つを使用する必要があります。
通常の実行とテストケースの2つの構成が必要だと思います。 – Alex
基本的には、ClassAのコピーを作成し、修正したclassBをautowireして、それを私のjunitで使用するとしますか?私はこれまでにやったことがありますが、今回はそのアプローチを避けたいと思います。私が欲しいことをするのを助ける春の仕組みがあるかどうかを考えようとしています。 – Columb1a
これは、インターフェイスと実装クラスを使うのがよい理由です。実際、コンストラクタインジェクションを使うのがベストプラクティスです。これは、Springを全く必要とせずに単体テストを実行できることを意味します(コンストラクタにモックを渡すだけです)。 – chrylis