当我调用模型映射器实体到DTO转换器方法时,我总是得到空指针异常。
这是将dto转换为实体的转换器服务,反之亦然
我以前没有处理过DTO,这是我第一次使用DTO,我还需要知道这是我实现DTO转换器服务的最佳方式吗,或者是否有任何建议。
@Autowired
private ModelMapper modelMapper;
@Bean
public ModelMapper modelMapper() {
return new ModelMapper();
}
@Override
public NotificationDto entityToDtoNotification(Notification notification) {
ModelMapper mapper = new ModelMapper();
return mapper.map(notification, NotificationDto.class);
}
@Override
public Notification dtoToEntityNotification(NotificationDto notificationDto) {
ModelMapper mapper = new ModelMapper();
return mapper.map(notificationDto, Notification.class);
}
当我在测试调用中调用该方法时,我得到空值
class NotificationServiceImplTest {
@Autowired
private NotificationServiceImpl notificationService;
@MockBean
private NotificationRepository notificationRepository;
@Autowired
ConverterServiceImpl converterService;
@Test
public void testCreateTicket() {
Notification notification = new Notification();
notification.setId(1);
notification.setMessage("Hello Hashan");
NotificationDto notificationDto = new NotificationDto();
//I get the null value as return
notificationDto=converterService.entityToDtoNotification(notification);
Mockito.when(notificationRepository.save(notification)).thenReturn(notification);
assertThat(notificationService.save(notificationDto)).isEqualTo(notification);
converterService.entityToDtoNotification(notification);
}
}
通知实体
@Entity
@Table(name = "notification")
public class Notification {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
private String message;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public Notification() {
}
public Notification(int id, String message) {
this.id = id;
this.message = message;
}
}
通知DTO
public class NotificationDto {
private int id;
private String message;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public NotificationDto(int id, String message) {
this.id = id;
this.message = message;
}
public NotificationDto() {
}
}
解决方案:在测试类上添加@SpringBootTest注释后,我可以从转换器服务访问值,而不会出现空指针异常
@SpringBootTest
class NotificationServiceImplTest {
您应该使用@RunWith(SpringRunner.class)
注释您的测试,以便您可以使用spring上下文自动关联属性。
请参阅:https://docs.spring.io/spring-boot/docs/1.5.2.RELEASE/reference/html/boot-features-testing.html
我有几个JOOQ存储库,它们从Postgres数据库获取数据,并将数据作为值对象提供。我使用JOOQ 3.10.7和一切工作正常。我已经将我的Spring启动版本从2.0.3升级到2.1.4,这将JOOQ版本升级到3.11.10。在映射Jooq记录时,我开始获取NullPointerExcema。 在上述场景中,当没有与给定条件(user.id.eq(1))匹配的记录时,fetchSingle必须
我正在使用CSV reader从获取数据,并在使用DataProvider的测试函数中使用该数据。
我有一个主页。我正在尝试使用测试注释测试TestNG中的页面标题。我得到了testTitle()的NullPointerException。url正在打开。
问题内容: 因此,我的布局是一个单独的文件,因此请给它充气。然后,我更改布局中的文本视图和图像,并调用measure,但是在尝试测量布局时会得到空指针。我一生无法弄清楚为什么会这样。我试图最终将布局转换为位图。 这是XML 在measure()行中,它引发了一个空指针,并且我已经验证了getWidth和getHeight在给出合法值。 有任何想法吗? 谢谢! 问题答案: 抛出该错误的原因是,当您为
我现在使用的是Itext PDFSmartCopy。我正在使用XMLWorker向document对象添加一些业务内容。然后我声明了一个阅读器(用于连接到此文档对象的pdf文件)。然后我用相同的文档对象和输出文件流作为参数调用PdfSmartCopy。然后使用常规步骤将页面复制到文档中, 但如果我使用一个新的文档对象ie而不添加业务内容,则这一块工作得很好。
问题内容: 我正在尝试调用接口的方法。该方法在中实现。但是当我调用该方法时,我得到了空指针异常。 我知道这是因为它仍未初始化,因此您正在调用未初始化的对象。显然,接口方法永远不会初始化。但是,如何从类中调用该方法呢? 我只在下面放置相关的源代码- 源代码: SharedFragment.java 通用.java MainActivity.java 错误记录 问题答案: 永远不会初始化,或者正在使用