Я пишу контрольный пример для моей SampleActivity.Я хочу проверить его, запустив MainActivity.
Совместное использование SampleActivity и его класса Test.
SampleActivity:
class SampleActivity : BaseActivity() {
@Inject
lateinit var router: RoutingContracts.Router
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
AndroidInjection.inject(this)
val intent = Intent(this, MainActivity::class.java)
startActivity(intent)
finish()
}
<----------------Rest of the code------------>
}
Совместное использование моего тестакласс:
@Config(constants = BuildConfig::class, sdk = [24], application = TestApplication::class)
@RunWith(RobolectricTestRunner::class)
@PowerMockIgnore("org.mockito.*", "org.robolectric.*", "android.*"
,"com.sun.org.apache.xerces.*", "javax.xml.*", "org.xml.*", "org.w3c.*"
, "com.sun.org.apache.xalan.*")
@PrepareForTest(MyFeatureLibrary::class)
class SampleActivityTest {
@get:Rule
public val rule = PowerMockRule()
@Test
fun shouldStartMainActivity() {
PowerMockito.spy<MyFeatureLibrary>(MyFeatureLibrary::class.java)
PowerMockito.doNothing().`when`<MyFeatureLibrary>(MyFeatureLibrary::class.java
, "initLibrary", Mockito.any(Activity::class.java)
, Mockito.anyBoolean() )
val sampleActivity = Robolectric.buildActivity(SampleActivity::class.java).create().get()
val expectedIntent = Intent(sampleActivity, MainActivity::class.java)
assertTrue(shadowOf(sampleActivity).nextStartedActivity.filterEquals(expectedIntent))
}
}
Тестовый класс изначально не имеет кода, связанного с имитацией мощности.Тогда тесты работают как положено.
Теперь я должен сделать статический вызов метода в базовой деятельности.Итак, я пытаюсь включить макет initLibrary статический вызов метода в BaseActivity.
Я получаю много ошибок сейчас.После поиска в Google я поставил много пакетов игнорирования Powermock.Но это не решает ошибки полностью.
Я хочу, чтобы power mock полностью игнорировал классы, связанные с инъекцией Android (Android.Inject (this)).Кто-нибудь сталкивался с этой проблемой?
Последнее сообщение об ошибке:
java.lang.RuntimeException: com.sample.myapp.TestApplication does not implement dagger.android.HasActivityInjector