反射-在控制器弹簧中设置私有字段



我使用Spring MVC

我在控制器中有一个私有字段。该字段的值来自属性文件,如

@Controller
public Class MainController() {
   @Value("${my-value}")
   private int myValue;
}

我必须重写用于selenium测试的值in。我如何重写这个字段的值,意味着我想设置一个自定义值(这样值就不会从属性文件中获取)?

可以这样吗,

ReflectionTestUtils.setField(MainController.class, "myValue", 3, Integer.class);

您应该将此代码放入控制器测试方法中。

@WebMvcTest(controllers = MainController.class, useDefaultFilters = false)
@Import({MainController.class})
public void MainControllerTest{
    @Autowired
    private MainController mainController
    @Test
    should_set_controller_private_field(){
        ReflectionTestUtils.setField(mainController, "myValue", 3)
        assertEquals(ReflectionTestUtils.getField(
            mainController, "myValue"), 3)
    }
}

相关内容

  • 没有找到相关文章

最新更新