私は抽象クラス持って定義されていない:春Autowire注釈:いいえ独自のBeanが
@Component
public abstract class BaseReport {
public void export() {
...
}
そして、それを拡張するクラスの束を、およびエクスポート()メソッドをオーバーライドする(またはしません) 。
public class Report1Test extends BaseTest {
@Autowired
Report1 _report;
public class Report2Test extends BaseTest {
@Autowired
Report2 _report;
これは BaseReportを拡張すべてのクラスのオートワイヤリングのために正常に動作します:問題なく、BaseReportを拡張する具象クラスautowire私のテストのほとんど
@Component
public final class Report1 extends BaseReport
@Component
public final class Report2 extends BaseReport
。しかし、export()メソッドをテストするために、抽象クラスそのもの(BaseReport)をオートワイヤリングする必要もあります。
public class BaseReportTest extends BaseTest {
@Autowired
BaseReport _report;
私はそれを実行しようとすると、私は悪名高いが出る:タイプBaseReportの
ませユニークBeanが定義されていない:予想単一マッチング豆が、2 [レポート1、第2報]を見つけました。
@Qualifierを使用しようとしましたが、@Qualifierの問題は、(私が理解しているように)Springを使用して、Interfaceを実装するクラスか、Abstractクラスを拡張するかをSpringに伝えることです。しかし、それは私の場合ではありません。私は抽象クラスそのものを使いたい。
私はまた、このように、@Resourceを使用してみました:
public class BaseReportTest extends BaseTest {
@Resource(name = "baseReport")
BaseReport _report;
春、この名前を持つBeanが存在しないと言われます。 :(
私はこの?
乾杯をどのように行うことができます。
あなたは絶対に正しいです。あなたの返信を読んだ後、私はもう一度見て、十分に、私は少し問題を誤解していた。 具体的なクラスはすべてBaseReportを拡張し、export()メソッドを実装しますが、export()メソッドはBaseReportからではなく、BaseReportとすべての具体的なレポートが実装するIReportインターフェイスから来ます。 BaseReportのexport()メソッドがないため、BaseReportのexport()メソッドをテストする必要はありません!私はすでにそれぞれの具象クラスのexport()メソッドをテストしているので、私の作業は完了です。 多くのご協力ありがとうございます。 –