junit 如何修复环境,getActiveProfiles()在UnitTest Java中为空

iyr7buue  于 2022-11-11  发布在  Java
关注(0)|答案(1)|浏览(134)

我有一段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")
我是否需要添加任何模拟或其他东西?

5gfr0r5j

5gfr0r5j1#

你的environment是null,因此是NullPointerException。这意味着你从测试类中模拟的Environment没有被注入到你的测试主题类中。你还没有向我们展示你的类中应该设置environment的部分。但是,例如,如果它被注入到构造函数中,请确保测试类使用new YourClass(environment);而不是new YourClass(null);初始化类。

相关问题