当试图为applicationContext.getBean编写测试用例时(类名)。获取空指针异常。下面是Java类
@Service
@Slf4j
public class MyClassName {
@Autowired
ServiceOne serviceOne;
@Autowired
ApplicationContext applicationContext;
public getCitizenData(String mobileNumber) {
CitizenDataService citizenDataService = applicationContext.getBean(CitizenDataService.class, mobileNumber);
log.info("Getting Data");
return citizenDataService.searchMethod(mobileNumber)
// While debugging test file citizenDataService is coming as Null Hence getting Null Pointer exception
.flatMap(.............
)
测试文件
class MyClassNameTest {
private MyClassName mockMyClassName;
@BeforeEach
void setUp() {
mockMyClassName = new MyClassName();
mockMyClassName.serviceOne = mock(ServiceOne.class);
mockMyClassName.applicationContext = mock(ApplicationContext.class);
//mockMyClassName.applicationContext.getAutowireCapableBeanFactory();
}
@Test
void testGetCitizenData() {
// Setup
// Configure ApplicationContext.getBean(...).
final CitizenDataService citizenDataService = new CitizenDataService("mobileNumber");
when(mockMyClassName.applicationContext.getBean(CitizenDataService.class, "args"))
.thenReturn(citizenDataService);
final result = mockMyClassName.getCitizenData("mobileNumber");
// While debugging this citizenDataService is coming as Null Hence getting Null Pointer exception
如何编写测试用例?
发布于 2022-10-11 11:44:48
我不建议模拟应用程序上下文。有太多的方法有相似的论点,很难嘲笑正确的方法。相反,可以使用专门为在测试中使用而编写的一个现成的实现,例如StaticApplicationContext
。
class MyClassNameTest {
private MyClassName mockMyClassName;
private ApplicationContext appCtx;
@BeforeEach
void setUp() {
mockMyClassName = new MyClassName();
mockMyClassName.serviceOne = mock(ServiceOne.class);
this.appCtx = new StaticApplicationContext();
}
@Test
void testGetCitizenData() {
appctx.registerBean(CitizenDataService.class, () -> new CitizenDataService("mobileNumber"));
final result = mockMyClassName.getCitizenData("mobileNumber");
https://stackoverflow.com/questions/73998715
复制相似问题