莫皮托无法注入模拟



我正在使用Mockito,并且我正在尝试将模拟CustomFileHandler注入我的RejerciCioDodao类,以进行测试。问题是,我的测试没有例外,但没有注入我的模拟对象,原始的@Autowired customfilehandler没有被替换。这是我的代码:

@Repository
public class REjercicioDAO extends ARHibernateDAO < REjercicio > implements IREjercicioDAO {
    @Autowired
    public ICustomFileHandler customFileHandler;
    ...
}

这是我的测试:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = ATest.CONTEXT_CONFIGURATION)
public class REjercicioDAOTest extends ATest {
    @Mock private ICustomFileHandler customFileHandler;
    @Autowired
    @InjectMocks
    private IREjercicioDAO rEjercicioDAO;
    @Before
    public void before () {
        MockitoAnnotations.initMocks(this);
        ...
    }

顺便说一句,实体按预期工作,接口与实际实体正确链接,我已经对此进行了测试。我该如何解决?

这是一个没有答案。我无法付出更多,因为我真的很遗憾看到这么多人使用这种尴尬的API依靠反思,而您可以通过明确设置依赖性来为班级的读者做出很清楚的事情。

事实是,我的测试没有例外,但这并没有注入我的 模拟对象

不足为奇。即使没有注射成功,这种注入模拟的方式仍保持安静。来自InjectMocks Javadoc(强调不是我的!(:

Mockito将尝试仅通过构造函数注入来注入模拟, 按顺序注入二阶注射或财产注入,如上所述 以下。如果以下任何策略失败,则Mockito 不会 报告失败; 即,您必须自己提供依赖项。

虽然Mockito没有报告故障,但我确实不鼓励使用此API。

关于您的实际问题,请看一下:

@Autowired
@InjectMocks
private IREjercicioDAO rEjercicioDAO;

您用弹簧和摩擦下注释来注释字段。您是否对他们的处理顺序感到满意?这些来自两个不同的库。我不知道它永远不会起作用(运气和随机存在(,但是您真的认为它很健壮吗?

要达到您的要求,您可以写下类似的内容,以两个明确的步骤来完成事情:
- 对象实例化:嘲笑依赖关系并注入弹簧依赖性
- 关系集:模拟依赖关系和春季依赖关系

之间
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = ATest.CONTEXT_CONFIGURATION)
public class REjercicioDAOTest extends ATest {
    @Mock 
    private ICustomFileHandler customFileHandler;
    @Autowired        
    private IREjercicioDAO rEjercicioDAO;
    @Before
    public void before () {    
        MockitoAnnotations.initMocks(this);
        // Set explicitly the fileHandler dependency
        rEjercicioDAO.setFileHandler(customFileHandler);         
    }
 }

您正在尝试将其与单位测试混合。

1(如果您使用的是Spring Boot:

@MockBean
private ICustomFileHandler customFileHandler;
@Autowired
private IREjercicioDAO rEjercicioDAO;

多数民众赞成在..

2(不使用Spring Boot:

public class TestConfig{
    @Bean
    @Primary
    public ICustomFileHandler customFileHandler(){
       return Mockito.mock(ICustomFileHandler.class);
    }
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = ATest.CONTEXT_CONFIGURATION, classes=TestConfig.class)
public class REjercicioDAOTest extends ATest {
   @Autowired
   private ICustomFileHandler customFileHandlerMock; 
    @Autowired
    private IREjercicioDAO rEjercicioDAO;

模拟被注入,您可以按照您的喜欢

将其设置在测试中

相关内容

  • 没有找到相关文章

最新更新