草庐IT

InjectMocks

全部标签

java - 如果要注入(inject)的实例具有最终类,如何使用 InjectMocks

我想用mockito测试一些服务。这些服务基于CDI,不幸的是,使用了我无法更改的字段注入(inject)。publicclassService{@InjectLoggerlogger;publicvoidmethod(){logger.info("somelogtext");}}现在使用mockito的@InjectMocks注释创建可测试实例非常容易。它将注入(inject)模拟和spy。@RunWith(MockitoJUnitRunner.class)publicclassServiceTest{@SpyLoggerlogger=LoggerFactory.getLogger(

java - 为什么用PowerMockRunner运行时不能使用@InjectMocks字段匹配?

我遇到了一个问题,在有2个@Mock相同类型。我也使用了@Mock(name="name_of_var")语法,但它仍然失败...这是被测类:importjava.util.Date;publicclassParent{privateDatedateA;privateDatedateB;publicvoidsetDateA(Date_dateA){dateA=_dateA;}publicvoidsetDateB(Date_dateB){dateB=_dateB;}publicDategetDateA(){returndateA;}publicDategetDateB(){returnd

java - 为什么 Mockito @InjectMocks 可能是要避免的事情?

为什么@InjectMocks可能是这种测试要避免的事情。@RunWith(MockitoJUnitRunner.class)publicclassMyClassTest{@MockprivateBarbar;@InjectMocksprivateFoofoo;//createdbyMockito@TestpublicvoidshouldCallMethod(){//whenfoo.myMethod();//then...}}Foo.javapublicclassFoo{privatefinalBarbar;publicFoo(Barbar){this.bar=bar;}...我在对这

java - mockito 中@InjectMocks 和@Autowired 用法的区别?

当我使用Mockito和Junit编写测试用例时,我使用了@InjectMocks作为要测试的类。在项目的其他部分,我还看到@Autowired被用于要测试的类。我什么时候可以使用@InjectMocks和@Autowired?当我们尝试将它们与要测试的类一起使用时,两者之间有什么区别? 最佳答案 @InjectMocks是一种Mockito机制,用于将test类中声明的字段注入(inject)到undertest类中的匹配字段中。它不要求被测类是Spring组件。@Autowired是Spring的注释,用于将beanAutowi

java - @Mock/@InjectMocks 用于 groovy - spock

在JUnit/Mockito中,我们有2个非常有用的注释:@Mock和@InjectMocks。在我的新项目中,我开始使用带有spock的groovy进行测试,我想知道是否有替代提到的注释? 最佳答案 在Spock中没有真正需要@Mock,因为已经有了=Mock(),它可以在任何可以使用注解的地方使用(而且在其他地方)。有一个针对@InjectMocks的公开拉取请求,但尚未确定此类功能是否会进入spock-core或spock-guice。(用spock-guice运送这个功能,或者至少在类路径上需要Guice,将允许将注入(in

java - 无法使用 java 类实例化名为异常的 @InjectMocks 字段

我有一个带有用户定义构造函数的类。publicclassEmployee{@InjectprivateMyBeanmyBean;privateStringabcd;protectedEmployee(Parameter1param1,Parameter2param2){//someoperationsonmethodparams//someoperationonmybeanthis.abcd="somevalue";}protectedStringgetAbcd(){returnnrOfAccesses;}protectedvoidsetAbcd(Stringabcd){this.ab

java - Mockito 和 CDI bean 注入(inject),@InjectMocks 调用@PostConstruct 吗?

我有这个代码:classPatient{@InjectSyringesyringe;@PostConstructvoidsayThankyouDoc(){System.out.println("Thathurtlikecrazy!");}}@RunWith(MockitoJUnitRunner.class)classTestCase{@MockSyringesiringeMock;@InjectMocksPatientpatient;//...}我希望Mockito调用PostConstruct,但我不得不添加:@Beforepublicvoidsimulate_post_constr

单元测试之@Mock与@InjectMocks(一文搞懂)

@Mock与@InjectMocks一般搭配组合使用,是单元测试必不可少的注解@Mock:需要模拟的类,我们需要模拟哪些类,就用它修饰哪些类的变量,常用于第三方服务service@InjectMocks:要测试的类,使用@Mock修饰的对象,就是我们测试哪个类,就用它修饰对应的变量,会整合使用@Mock修饰的对象直接上代码@ServicepublicclassThirdService{publicObjectgetThirdUser(StringuserId){returnnewObject();}}@ServicepublicclassUserService{@Autowiredprivat

java - @InjectMocks 在 Java 6 和 7 中表现不同

通过一个非常简单的Mockito运行JUnit测试和类,当使用Java1.6.0_32和Java1.7.0_04运行测试时,我看到了不同的输出,并且想了解为什么会发生这种情况。我怀疑正在进行某种类型的删除,但想要一个明确的答案。这是我的示例代码和有关如何从命令行运行的说明:FooServiceTest.javaimportorg.junit.*;importorg.junit.runner.*;importorg.mockito.*;importorg.mockito.runners.MockitoJUnitRunner;importstaticorg.mockito.Mockito.

java - Mockito @InjectMocks 不适用于相同类型的字段

我很惊讶地发现下面的简单代码示例并不适用于所有Mockito版本>1.8.5@RunWith(MockitoJUnitRunner.class)publicclassMockitoTest{@Mock(name="b2")privateBb2;@InjectMocksprivateAa;@TestpublicvoidtestInjection()throwsException{assertNotNull(a.b2);//failsassertNull(a.b1);//alsofails,becauseunexpectedlyb2mockgetsinjectedhere}staticcl