Mockito是否支持@Any @Inject Instance <>界面?

问题描述 投票:0回答:1

我有一个init()方法,它使用注入的私有实例<>。如何使用JUnit或Mockito测试此类?我试图制作一些假类并将它们添加到列表中并将此列表设置为我的私有字段但是我有这个错误

java.lang.IllegalArgumentException:无法设置javax.enterprise.inject.Instance字段......

MyClass是:

@Singleton
@Startup
public class HandlerManager {

    @Any
    @Inject
    private Instance<RollbackHandler<RollbackData>> handlers;

    private RollbackHandler<RollbackData> rollbackHandler;


    @PostConstruct
    public void init() {
        for (RollbackHandler<RollbackData> bean : handlers) {

//do something

            }
        }
    }
junit mockito instance ejb-3.0 inject
1个回答
0
投票

除非您使用自定义工作,否则框架不会处理任何注释。您必须使用@Mock在测试中将所有这些依赖项定义为模拟,并在测试方法(如setup())之前调用injectMocks()。这是一个多部分问题。

  • 使用构造函数注入,字段注入是邪恶的。你仍然可以用@Inject注释你的构造函数。
© www.soinside.com 2019 - 2024. All rights reserved.