我有一段Java代码,它使用了一个环境变量,代码的行为取决于这个变量的值。然后我在TestClass中创建了它的UnitTest,并调试以查看结果。
然后我发现environment.getActiveProfiles()
中的值为null
我在serviceImpl中这样设置环境
@Autowired
private Environment environment;
我已经在TestClass中模拟了一些环境
@Mock
private Environment environment;
...
...
String[] activeProfiles = new String[]{"dev"};
ActiveProfilesResponse activeProfilesResponse = new ActiveProfilesResponse();
activeProfilesResponse.setProfiles(List.of(activeProfiles));
when(environment.getActiveProfiles()).thenReturn(activeProfiles);
并在该TestClass中提供@ActiveProfiles("dev")
我是否需要添加任何模拟或其他东西?
1条答案
按热度按时间5gfr0r5j1#
你的
environment
是null,因此是NullPointerException
。这意味着你从测试类中模拟的Environment
没有被注入到你的测试主题类中。你还没有向我们展示你的类中应该设置environment
的部分。但是,例如,如果它被注入到构造函数中,请确保测试类使用new YourClass(environment);
而不是new YourClass(null);
初始化类。