使用ReflectionTestUtils

使用ReflectionTestUtils

我在这里有点惊讶-在我的课堂上,我有一个private String[] permissions;字段,我想在运行测试时在外部进行设置。我曾想过使用ReflectionTestUtils.setField(),但似乎没有一种方法可以做到这一点。我还有其他方法可以做到这一点吗?不,我不允许为此声明任何设置者:/

最佳答案

实际上可以在这里使用ReflectionTestUtils

假设您的课程如下所示:

public class Clazz {

    private String[] permissions;

    public String[] getPermissions() {
        return permissions;
    }
}


然后,在测试中,您可以执行以下操作:

import org.junit.Assert;
import org.junit.Test;
import org.springframework.test.util.ReflectionTestUtils;

@Test
public void test() {
    Clazz clazz = new Clazz();

    String[] s = new String[2];
    s[0] = "asd";
    s[1] = "qwe";

    ReflectionTestUtils.setField(clazz, "permissions", s);

    Assert.assertArrayEquals(new String[]{"asd", "qwe"}, clazz.getPermissions());
}


spring-boot-starter-test 2.2.6.RELEASE(https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-test/2.2.6.RELEASE)有关。

<dependency>
    groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <version>2.2.6.RELEASE</version>
    <scope>test</scope>
</dependency>

关于java - 如何使用ReflectionTestUtils.setField()设置私有(private)String数组?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/61195025/

10-12 05:23