早些时候,我的意思是:
public class FeedbackService {
private final FeedbackHelper feedbackHelper;
@Inject
public FeedbackService(FeedbackHelper feedbackHelper) {
this.feedbackHelper = feedbackHelper;
}
//rest of the class
}测试文件
public class FeedbackDataServiceTest {
private FeedbackService feedbackService;
@Mock private FeedbackHelper feedbackHelper;
@Before
public void setup() {
MockitoAnnotations.initMocks(this);
this.feedbackService = new FeedbackService(feedbackHelper);
}
}做得很好。但当我改变到:
public class FeedbackService {
@Inject private FeedbackHelper feedbackHelper;
}测试文件
public class FeedbackDataServiceTest {
private FeedbackService feedbackService;
@Mock private FeedbackHelper feedbackHelper;
@Before
public void setup() {
MockitoAnnotations.initMocks(this);
}
}测试用例开始失败。还有什么需要做的吗?
发布于 2020-06-12 06:41:39
使用@InjectMocks将模拟注入服务类。
public class FeedbackDataServiceTest {
@InjectMocks private FeedbackService feedbackService;
@Mock private FeedbackHelper feedbackHelper;
@Before
public void setup() {
MockitoAnnotations.initMocks(this);
}
}发布于 2020-06-12 06:43:23
有三种注射方式。建议如果依赖项是强制性的,则使用构造函数注入;如果依赖项是可选的,则使用setter注入。如果您想模拟字段注入,可以在下面的测试对象上使用@InjectMock。但是,如果您想在没有模拟框架的情况下进行测试,则很难进行测试。
@RunWith(MockitoJUnitRunner.class)
public class ApplicationTest
{
@InjectMocks
MainClass sut;
@Mock
DatabaseDAO dependentClassOne;
@Test
public void validateTest()
{
boolean saved = sut.save("abcd");
assertEquals(true, saved);
}https://stackoverflow.com/questions/62338753
复制相似问题