首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用@Inject?

如何使用@Inject?
EN

Stack Overflow用户
提问于 2020-06-12 06:34:05
回答 2查看 72关注 0票数 2

早些时候,我的意思是:

代码语言:javascript
复制
public class FeedbackService {
  private final FeedbackHelper feedbackHelper;

  @Inject
  public FeedbackService(FeedbackHelper feedbackHelper) {
    this.feedbackHelper = feedbackHelper;
  }
  //rest of the class
}

测试文件

代码语言:javascript
复制
public class FeedbackDataServiceTest {
  private FeedbackService feedbackService;
  @Mock private FeedbackHelper feedbackHelper;

  @Before
  public void setup() {
    MockitoAnnotations.initMocks(this);
    this.feedbackService = new FeedbackService(feedbackHelper);
  }
}

做得很好。但当我改变到:

代码语言:javascript
复制
public class FeedbackService {
  @Inject private FeedbackHelper feedbackHelper;

}

测试文件

代码语言:javascript
复制
public class FeedbackDataServiceTest {
  private FeedbackService feedbackService;
  @Mock private FeedbackHelper feedbackHelper;

  @Before
  public void setup() {
    MockitoAnnotations.initMocks(this);
  }
}

测试用例开始失败。还有什么需要做的吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-06-12 06:41:39

使用@InjectMocks将模拟注入服务类。

代码语言:javascript
复制
public class FeedbackDataServiceTest {
  @InjectMocks private FeedbackService feedbackService;
  @Mock private FeedbackHelper feedbackHelper;

  @Before
  public void setup() {
    MockitoAnnotations.initMocks(this);
  }
}
票数 2
EN

Stack Overflow用户

发布于 2020-06-12 06:43:23

有三种注射方式。建议如果依赖项是强制性的,则使用构造函数注入;如果依赖项是可选的,则使用setter注入。如果您想模拟字段注入,可以在下面的测试对象上使用@InjectMock。但是,如果您想在没有模拟框架的情况下进行测试,则很难进行测试。

代码语言:javascript
复制
@RunWith(MockitoJUnitRunner.class)
public class ApplicationTest 
{
    @InjectMocks
    MainClass sut;

    @Mock
    DatabaseDAO dependentClassOne;

    @Test
    public void validateTest()
    {
        boolean saved = sut.save("abcd");
        assertEquals(true, saved);
    }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62338753

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档