概述本文将介绍Mockito库的以下注释:@Mock、@Spy、@Captor和@InjectMocks。启用Mockito注释MockitoJUnitRunner第一个选项是用MockitoJUnitRunner注释JUnit测试:@ExtendWith(MockitoExtension.class)publicclassMockitoAnnotationUnitTest{...}MockitoAnnotations.openMocks()或者,我们可以通过调用MockitoAnnotations.openMocks()以编程方式启用Mockito注释:@BeforeEachpublicvo
我目前正在研究Mockito框架,并使用Mockito创建了几个测试用例。但后来我读到,我可以使用@Mock和@InjectMocks而不是调用mock(SomeClass.class)-我唯一的需要做的是用@RunWith(MockitoJUnitRunner.class)注释我的测试类或使用MockitoAnnotations.initMocks(this);在@Before方法。但它不起作用-@Mock似乎不起作用!这是我的2个代码修订版-一个使用注释,一个没有。我做错了什么?publicclassReportServiceImplTestMockito{privateTaskS
我目前正在研究Mockito框架,并使用Mockito创建了几个测试用例。但后来我读到,我可以使用@Mock和@InjectMocks而不是调用mock(SomeClass.class)-我唯一的需要做的是用@RunWith(MockitoJUnitRunner.class)注释我的测试类或使用MockitoAnnotations.initMocks(this);在@Before方法。但它不起作用-@Mock似乎不起作用!这是我的2个代码修订版-一个使用注释,一个没有。我做错了什么?publicclassReportServiceImplTestMockito{privateTaskS
这是我的问题:我有几个Web服务类来测试它们是否都从通用服务继承了它们的方法。我认为我可以按功能区域(即三组测试方法,每组依赖于不同的底层DAO方法调用)分解测试套件,而不是为每个测试套件编写单元测试。我建议做的是:@MockStateDAOmockedStateDao;@MockCountyDAOmockedCountyDao;@MockVisitorDAOmockedVisitorDao;然后调用:@InjectMocksCountyServiceImplcountyService=newCountyServiceImpl();@InjectMocksStateServiceImp
这是我的问题:我有几个Web服务类来测试它们是否都从通用服务继承了它们的方法。我认为我可以按功能区域(即三组测试方法,每组依赖于不同的底层DAO方法调用)分解测试套件,而不是为每个测试套件编写单元测试。我建议做的是:@MockStateDAOmockedStateDao;@MockCountyDAOmockedCountyDao;@MockVisitorDAOmockedVisitorDao;然后调用:@InjectMocksCountyServiceImplcountyService=newCountyServiceImpl();@InjectMocksStateServiceImp
我有一个A类,它使用3个不同的Autowiring类publicclassA(){@AutowiredprivateBb;@AutowiredprivateCc;@AutowiredprivateDd;}在测试它们时,我希望只有2个类(B和C)作为模拟,并让D类正常运行时Autowiring,此代码不适用于我:@RunWith(MockitoJUnitRunner.class)publicclassaTest(){@InjectMocksprivateAa;@MockprivateBb;@MockprivateCc;@AutowiredprivateDd;}真的有可能吗?
我有一个A类,它使用3个不同的Autowiring类publicclassA(){@AutowiredprivateBb;@AutowiredprivateCc;@AutowiredprivateDd;}在测试它们时,我希望只有2个类(B和C)作为模拟,并让D类正常运行时Autowiring,此代码不适用于我:@RunWith(MockitoJUnitRunner.class)publicclassaTest(){@InjectMocksprivateAa;@MockprivateBb;@MockprivateCc;@AutowiredprivateDd;}真的有可能吗?
我看到我认为是错误的行为。@InjectMocks似乎并没有在每个测试方法之前创建一个新的测试对象。@Mock在哪里。在下面的示例中,如果Subject.section是最后一个@Test失败。如果它不是最终的都通过。我目前的解决方法是使用@BeforeClass,但这并不理想。主题.java:packageinject_mocks_test;publicclassSubject{privatefinalSectionsection;publicSubject(Sectionsection){this.section=section;}publicSectiongetSection()
下面的方法等价于什么:@MockMyType1myType1;@Autowired@InjectMocksMyType2myType2;我可以将@Mock替换为mock(MyType1.class)。但是如何用方法调用替换@InjectMocks呢?像这样:injectMocks(MyType2.class) 最佳答案 Mockito中没有用于模拟注入(inject)的公共(public)API。此外,由于此注释主要由测试中布局事物的方式驱动,因此它与测试的初始化阶段相当相关。虽然它可能会在未来的某个时候发生变化。但是Mockito
在我现在正在进行的项目中,我经常看到@Spy和@InjectMocks在字段上一起使用。我从未在任何教程或其他资源中看到过这种方式。我用谷歌搜索了这个特定的组合,但没有在GitHub上找到除此线程之外的任何其他内容:https://github.com/mockito/mockito/issues/169这让我觉得我们以一种奇怪的方式使用它。注意:我认为同时使用两个注解的原因有时是有意义的,因为如果你只使用@InjectMocksMockito尝试使用无参数构造函数实例化该类。如果您没有无参数构造函数并添加@Spy您可以使用该对象而无需空构造函数。编辑:另一个重要的用途是你只能stub