У меня есть абстрактный базовый тестовый класс и интерфейс.Внутри тестового класса объявляется закрытое поле интерфейса типа.
abstract class FibonacciTest {
*private FibonacciImplementation fibonacciImplementation;*
public FibonacciImplementation getImplementation(){
return this.fibonacciImplementation;
}
protected void setImplementation(FibonacciImplementation fibimplem){
this.fibonacciImplementation = fibimplem;
}
abstract void createFibonacciImplementation();
@BeforeEach
void createImplementation(){
createFibonacciImplementation();
}
@Test
void invalidPosition(){
assertEquals(new BigInteger("-2"),
fibonacciImplementation.calculateFib(-2));
}
Интерфейс:
public interface FibonacciImplementation {
BigInteger calculateFib(int position);
}
Классы субтестов для базового класса тестов выглядят примерно так:
public class RecursiveFibonacciTest extends FibonacciTest{
@BeforeEach
void createFibonacciImplementation(){
fibonacciImplementation = new RecursiveFibonacciImplementation();* error is here
}
}
RecursivefibonacciImplentation заключается в следующем:
public class RecursiveFibonacciImplementation implements FibonacciImplementation {
@Override
public BigInteger calculateFib(int position) {
if(position < 0 )
return new BigInteger("" + position);
if(position == 1 || position == 0)
return new BigInteger("1");
return calculateFib(position-1).add(calculateFib(position-2));
}
}
Проблема, с которой я столкнулся, заключается в том, что когда в классе суб-теста компилятор жалуется, что я пытаюсь получить доступ к закрытому полю.Поле private FibonacciImplementation fibonacciImplementation;
.Как мне удалить эту ошибку.Как мне получить доступ к fibonacciImplementation
?Кажется, что геттер и сеттер не работают. Компилятор говорит fibonacciImplementation has private access in FibonacciTest
.
Имейте в виду, требование должно быть частным полем.