我试图用componentmodel=“spring”
为MapStruct映射器编写单元测试。
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'org.onap.sdc.workflow.api.mapping.WorkflowMapperTest': Unsatisfied dependency expressed through field 'workflowMapper'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'org.onap.sdc.workflow.services.mappers.WorkflowMapper' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
@Mapper(componentModel = "spring")
public interface WorkflowMapper {
@Mapping(source = "properties", target = "category", qualifiedByName = "propertiesToCategoryMapper")
Workflow itemToWorkflow(Item item);
@Mapping(source = "category", target = "properties", qualifiedByName = "categoryToPropertiesMapper")
@InheritInverseConfiguration
Item workflowToItem(Workflow workflow);
@Named("propertiesToCategoryMapper")
default String customPropertiesToCategoryMapper(Map<String, Object> properties) {
return String.class.cast(properties.get(WorkflowProperty.CATEGORY));
}
@Named("categoryToPropertiesMapper")
default Map<String, Object> customCategoryToPropertiesMapper(String category) {
return Collections.singletonMap(WorkflowProperty.CATEGORY, category);
}
@Service("workflowManager")
public class WorkflowManagerImpl implements WorkflowManager {
private WorkflowMapper workflowMapper;
@Autowired
public WorkflowManagerImpl(WorkflowMapper workflowMapper) {
this.workflowMapper = workflowMapper;
}
...some code
单元测试类:
@ContextConfiguration(classes =
WorkflowMapperTest.WorkflowMapperSpringTestConfig.class)
@RunWith(SpringJUnit4ClassRunner.class)
public class WorkflowMapperTest {
@Configuration
@ComponentScan(basePackageClasses = WorkflowMapperTest.class)
public static class WorkflowMapperSpringTestConfig { }
@Autowired
WorkflowMapper workflowMapper;
@Test
public void shouldMapItemPropertyToWorkflowCategory() {
...some code...
}
任何帮助都将不胜感激。
乍一看,您没有将希望测试的bean包含在组件扫描中。
您需要更新@componentscan
配置以包含它。
@ComponentScan(basePackageClasses = {WorkflowMapperTest.class,
WorkflowMapper.class,
WorkflowMapperImpl.class})
我使用的是一个用MapStruct生成的映射器: 缺省组件模型是spring(在pom.xml中设置)
我在为SpringJUnit4ClassRunner.class)配置测试时遇到了问题。我的问题是因为我的映射器从map结构到达时返回null。
我正在使用MapStruct,mapstruct-jdk8版本1.1.0.final并定义我通过spring注入的抽象类。 我正在研究如何能够通过Junit测试来测试它们?我有一个基本的主映射器,它将使用2个子映射器 我尝试了几种方法,但无法正确实例化映射器来测试它。 java.lang.RuntimeException:java.lang.ClassNotFoundException:找不到Co
当前有包含内部映射器的映射器(有时,它们本身包含其他内部映射器)。
例如,我有以下接口映射器: 在代码中,您可以看到映射和一些默认方法,其中包含其他映射。如何在Mapstruct映射中使用这些方法,以便Mapstruct使用这些方法在字段中填充值?
我有下面的映射器类,我想在其中使用。我正在尝试构造函数注入,但不起作用,并且正在打印。 mapStruct实现类 如果我使用使用字段注入,这样它就可以正常工作。这意味着Spring不支持类的构造函数注入。是因为类不能直接实例化,需要子类来实例化吗? 有没有什么方法可以在实现类中创建一个构造函数,如下所示: 这样,构造函数注入应该可以工作。