0

1 つのクラスに複数のオプションがあるジェネリック インターフェイス リソースをモックしようとしています。名前付きリソースに渡されるものを見つけました。それは、変数にリソースの名前パラメーターと同じ名前を付けることです。しかし、名前が同じ (ただしジェネリック型が異なる) 2 つの @Injectable フィールドがある場合、両方に対してこれを行うことはできません。これを回避する方法はありますか?

@Service("SourceDescriptionService")
public class SourceDescriptionServiceImpl implements CrudService<LnssDescription> {
    @Resource(name = "LnssCrudRepository")
    private LnssCrudRepository<LnssDescription> descriptionRepository;

    @Resource(name = "SourceRepository")
    private SourceRepository sourceRepository;

    @Resource(name = "LnssCruRepository")
    private LnssCruRepository<LnssState> stateRepository;

    @Resource(name = "LnssCruRepository")
    private LnssCruRepository<LnssVariant> variantRepository;

そして私のテストの試み:

@Tested
private SourceDescriptionServiceImpl sut;

@Injectable
private SourceRepository SourceRepository;

@Injectable
private LnssCrudRepository<LnssDescription> LnssCrudRepository;

@Injectable
private LnssCruRepository<?> LnssCruRepository;

LnssState をパラメーター化するなど、CruRepository インターフェイスで他のバリエーションを試しました。これにより、エラーとして LnssVariant が返されるか、エラーの状態に戻るパラメーター化が削除されます。

これはエラーです:

java.lang.IllegalStateException: Missing @Injectable for field "com.ln.sourceset.model.repository.LnssCruRepository<com.ln.sourceset.model.data.LnssState> stateRepository" in SourceDescriptionServiceImpl

どんな助けでも大歓迎です!ありがとう。

4

1 に答える 1

0

テストするクラスの依存関係と同じ名前のテスト注入可能名前を付けます。

テストしているクラスには次の依存関係があります

@Inject
@Named("somename")
private SomeClass somename;

上記のクラスをテストするテストケースでは、注入可能であり、以下が必要です。

@Injectable
private SomeClass somename;

お役に立てれば

于 2019-06-11T18:53:11.587 に答える