У меня есть частное логическое поле, которое я пытаюсь установить в true, устанавливая его внутреннее состояние с помощью power mockito или с помощью частного установщика, но ни одно из них не работает.Я положил операторы печати в логику, чтобы проверить переменную.я вижу, что в моем предыдущем классе ему присваивается значение true, но как только тест проверяет оператор, использующий приватное поле, он становится ложным.Может кто-нибудь объяснить, что я делаю не так?
SQLJConnectionBase spy = PowerMockito.spy( new SQLJConnectionBase());
System.out.println("current internal state - " + Whitebox.getInternalState(spy, "isJUnitTestCase"));
PowerMockito.doReturn(true).when(spy, "isJUnitTestCase");
Whitebox.setInternalState(spy, "isJUnitTestCase", true);
System.out.println("new internal state - " + Whitebox.getInternalState(spy, "isJUnitTestCase"));
консольный вывод операторов печати в тестовом классе до и после манипуляции с закрытым полем в методе beforeclass
current internal state - false
new internal state - true
Консольный вывод операторов печати в классе, тестируемом в методе с использованием закрытого метода и закрытой переменной
variable state - false
method call variable state - false
, как вы можете видеть, isJUnitTest устанавливается в true в предклассе, но когда тестовый примерфактически использует его, isJUnitTest является ложным.
Это мои аннотации на тестовом классе
@PowerMockIgnore("javax.management.*")
@RunWith(PowerMockRunner.class)
@PrepareForTest({SQLJConnectionBase.class})
есть идеи?