как издеваться над конструктором абстрактного класса - PullRequest
0 голосов
/ 12 апреля 2020

Я не могу издеваться над конструктором в абстрактном классе. Получение NPE при попытке прочитать System.getenv("SOME_ENV"). Я попробовал так много комбинаций, как @spy, @Mock, установил переменные и попытался добавить разных бегунов, но безуспешно. Может кто-нибудь помочь, пожалуйста?

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;

import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.mockito.Mockito;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;

public abstract class AbstractClass {
    private String x;

    public AbstractClass(){
    try {
      x = new String(Files.readAllBytes(Paths.get(System.getenv("SOME_ENV"))));
       }
     catch (IOException e){
                e.printStackTrace();
            }
    }
}

// ConcrteClass. java

 class ConcrteClass extends AbstractClass {

    public void method1() {
        System.out.println("from sub class");
    }
}

// ConcrteClassTest. java

@RunWith(PowerMockRunner.class)
@PrepareForTest({ System.class, ConcrteClass.class, AbstractClass.class })
public class ConcrteClassTest {
    @Mock
    ConcrteClass concrteClass;

    @BeforeEach
    public void test() {
    PowerMockito.when(System.getenv(Mockito.eq("SOME_ENV"))).thenReturn("xyz");
    }
    @Test
    public void testMethod(){
       concrteClass = new ConcrteClass();
     }

}   
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...