【发布时间】:2021-07-02 12:15:00
【问题描述】:
我是 JUnit 和 Java 单元测试的新手。我在测试我的代码时遇到问题。任何帮助表示赞赏。
我的java类:AService.java
@Service
public class AService {
@Autowired
private ServiceB serviceB;
@Autowired
private Gson gson;
public MyEntity getEntity() {
String jsonResponse = serviceB.getResponse();
return gson.fromJson(jsonResponse, MyEntity.class);
}
}
我的测试班:AServiceTest.java
@ExtendWith(MockitoExtension.class)
public class AServiceTest {
@Mock
private ServiceB serviceB;
@Autowired
private Gson gson;
@InjectMocks
private AService aService;
@Test
public void getEntityTest() {
String serviceBResponse = "{\"id\":55,\"name\":\"My entity\",\"address\":\"XYZ\"}";
when(serviceB.getResponse()).thenReturn(serviceBResponse);
MyEntity entity = aService.getEntity();
assertEquals("My entity", entity.getName());
}
}
这给了 NullPointerException 因为gson 对象没有被初始化。我们也不能模拟gson,因为Gson 类是final。
如何测试此代码。我正在使用 spring boot 和 junit5.
【问题讨论】:
-
那是因为您没有在测试中使用 Spring。将您的类转换为使用构造函数注入而不是字段注入,问题将很容易解决。
标签: java spring-boot mockito gson junit5