【发布时间】:2017-11-03 22:38:08
【问题描述】:
我正在使用一个由 MapStruct 生成的映射器:
@Mapper
public interface CustomerMapper {
Customer mapBankCustomerToCustomer(BankCustomerData bankCustomer);
}
默认组件模型为spring(在pom.xml中设置)
<compilerArg>-Amapstruct.defaultComponentModel=spring</compilerArg>
我有一项服务,我在其中注入客户映射器,并且在运行应用程序时工作正常
@Autowired
private CustomerMapper customerMapper;
但是当我运行涉及@SpringBootTest 的单元测试时
@SpringBootTest
@AutoConfigureMockMvc
@RunWith(SpringRunner.class)
public class SomeControllerTest {
@Mock
private SomeDependency someDependency;
@InjectMocks
private SomeController someController;
@Test
public void shouldDoSomething() {
...
}
}
我得到一个 org.springframework.beans.factory.UnsatisfiedDependencyException
通过字段'customerMapper'表达的不满足的依赖关系
【问题讨论】:
-
在通过 IDE、Maven 或两者调用测试时是否会发生这种情况?
-
如果它是 IDE-only,我的猜测是 target/generated-sources 不会作为源文件夹添加到 IDE 项目中。
-
我只使用 IDE 运行测试,但我确实将 generate-sources 文件夹添加为源文件夹,否则我的应用程序将无法运行。
标签: spring unit-testing dependency-injection mapstruct