Как использовать ReflectionTestUtils.setField () для установки частного массива String? - PullRequest
0 голосов
/ 13 апреля 2020

Я немного удивлен здесь - в моем классе у меня есть поле private String[] permissions;, которое я хотел бы установить во время теста. Я думал об использовании ReflectionTestUtils.setField(), но не похоже, что есть способ сделать это. Есть ли другой способ, которым я могу go сделать это? И нет, я не могу объявить какие-либо сеттеры для этого: /

1 Ответ

0 голосов
/ 13 апреля 2020

Здесь на самом деле можно использовать 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. РЕЛИЗ (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>
...