Java 在Spring boot中模拟@Value注释时出错

Java 在Spring boot中模拟@Value注释时出错,java,junit,mockito,Java,Junit,Mockito,这是我的班级: public class Foo { @Value("${myapp.foo}") private String foo; void fooValue(){ // some code } } 这是我的测试课: @RunWith(MockitoJUnitRunner.class) public class FooTest { @InjectMocks private Foo foo;

这是我的班级:

public class Foo {

    @Value("${myapp.foo}")
    private String foo;

    void fooValue(){
       // some code
    }
}
这是我的测试课:

@RunWith(MockitoJUnitRunner.class)
public class FooTest {

    @InjectMocks
    private Foo foo;

    @Before
    public void setUp() {
        ReflectionTestUtils.setField(foo, "myappfoo", "foo");
    }

    @Test
    public void testFoo() {
        // some test code
    }
}
当我运行测试时,我得到以下错误:

java.lang.IllegalArgumentException: Could not find field 'myapp.foo' of type [null] on target object [Foo@18271936] or target class [class Foo]
    at org.springframework.test.util.ReflectionTestUtils.setField(ReflectionTestUtils.java:185)
    at org.springframework.test.util.ReflectionTestUtils.setField(ReflectionTestUtils.java:120)
我还想在测试方法中使用字符串变量foo。如何操作。

接收第二个参数作为字段名,您可以直接编码

ReflectionTestUtils.setField(foo, "foo", "foo");
第一个参数是目标,第二个是字段名,第三个是值

接收第二个参数作为字段名,您可以直接编码

ReflectionTestUtils.setField(foo, "foo", "foo");

第一个参数是目标,第二个是字段名,第三个是值

谢谢!以及如何在测试nethod中使用字段名字符串变量
foo
?使用ReflectionTestUtils.getField(foo,“foo”)方法,您需要强制转换它,因为它返回Object。第一个参数是目标,第二个是字段名@谢谢!以及如何在测试nethod中使用字段名字符串变量
foo
?使用ReflectionTestUtils.getField(foo,“foo”)方法,您需要强制转换它,因为它返回Object。第一个参数是目标,第二个是字段名@Som