Я пытаюсь вызвать метод, определенный во фрагменте из класса модульного теста. Метод использует метод getString () для доступа к строковому ресурсу, поэтому я получаю следующее исключение:
java.lang.IllegalStateException: Fragment MyFragment{5474c6c} not attached to a context.
Фрагмент юнит-теста
class Test {
lateinit var mfragment: MyActivity.MyFragment
@Before
fun setupFragment(){
minorWorksElectricalFragment1 = MyActivity.MyFragment()
}
@Test
fun extraInstrumentValidationStatus_withMultifunction_allOtherNA(){
val status = mfragment!!.getExtraInstrumentValidationStatus("Testvalue",
"NA",
"NA",
"NA",
"NA",
"NA")
Assert.assertThat(status,`is`(true))
}
}
Определение метода
public boolean getExtraInstrumentValidationStatus(String multiFunctionalValue,
String insulationResisValue,
String continuityValue,
String earthElectrodeValue,
String earthFaultValue,
String rcdValue) {
String[] nonMultiFunctionalValues = new String[]{insulationResisValue,
continuityValue,
earthElectrodeValue,
earthFaultValue,
rcdValue};
if (!multiFunctionalValue.equalsIgnoreCase(getString(R.string.NA)) &&
!StringUtils.isEmpty(multiFunctionalValue.trim())) {
for (String value : nonMultiFunctionalValues) {
if (value.equalsIgnoreCase(getString(R.string.NA)) ||
StringUtils.isEmpty(value.trim())) return false;
}
} else {
for (String value : nonMultiFunctionalValues) {
if (!value.equalsIgnoreCase(getString(R.string.NA))) return false;
}
}
return true;
}
Может кто-нибудь предложить лучший вариант инициализации фрагмента с контекстом в модульном тесте?