Java 为什么反射api不能在测试用例中工作

Java 为什么反射api不能在测试用例中工作,java,reflection,Java,Reflection,我试图使用java反射api从我的测试类中访问主类变量,但我遇到了如下异常,有人能指导我吗 主类 测试班 例外情况 将“消息”设为类字段 也可以使用ReflectionTestUtils.setField(private_Static,“message”,“data”)您的privatestic类没有消息字段。它的过程方法声明了一个消息变量,但这不是您可以使用反射访问的。@Aaron谢谢您的建议,我认为可以访问内部的方法variables@AaronJava从1.1开始就支持访问参数。8中的新功

我试图使用java反射api从我的测试类中访问主类变量,但我遇到了如下异常,有人能指导我吗

主类 测试班 例外情况 将“消息”设为类字段
也可以使用ReflectionTestUtils.setField(private_Static,“message”,“data”)

您的
privatestic
类没有
消息
字段。它的
过程
方法声明了一个
消息
变量,但这不是您可以使用反射访问的。@Aaron谢谢您的建议,我认为可以访问内部的方法variables@AaronJava从1.1开始就支持访问参数。8中的新功能是,当使用此元信息编译类时,可以检索参数的名称。但是,要使用您喜欢的任何参数调用该方法,您不需要知道名称。
package com.example.microservice.controller;

public class PrivateStatic {

    public void process() {
        String message = "data";
        if (message != null && message.equalsIgnoreCase("data")) {
            System.out.println("print message"+message);
        } else {
            System.out.println("empty message"+message);
        }
    }

}
package com.example.microservice.controller;
import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Spy;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;


@SpringBootTest
@RunWith(SpringJUnit4ClassRunner.class)
public class PrivateStaticTest {

    @InjectMocks
    PrivateStatic private_Static;

    @Test
    public void processTest() throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException {

        final java.lang.reflect.Field field = private_Static.getClass().getDeclaredField("message");
        final boolean origionalValue = field.isAccessible();
        field.setAccessible(true);
        field.set(private_Static, "data");
        field.setAccessible(origionalValue);
        private_Static.process();
    }

}
java.lang.NoSuchFieldException: message
    at java.lang.Class.getDeclaredField(Class.java:2070)
    at com.example.microservice.controller.PrivateStaticTest.processTest(PrivateStaticTest.java:21)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:675)
    at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
public class PrivateStatic {
    private String message = "data";

    public void process() {
        if (message != null && message.equalsIgnoreCase("data")) {
            System.out.println("print message"+message);
        } else {
            System.out.println("empty message"+message);
        }
    }
}