Piszę testy dla komponentu w mojej aplikacji na Androida. Ten komponent wykorzystuje działania do tworzenia raportów. Potrzebuję więc działania w celu przetestowania komponentu (brzydka architektura) i pomyślałem, że łatwo będzie stworzyć fikcyjną aktywność w projekcie testowym, a następnie utworzyć testy odziedziczone po ActivityInstrumentationTestCase2<TestActivity>
, ale z jakiegoś powodu zawsze otrzymuję wyjątek java.lang.RuntimeException: Unable to resolve activity for: Intent { act=android.intent.action.MAIN flg=0x10000000 cmp=com.xxx/.Testctivity }
.Czy można zdefiniować działanie w projekcie testowym systemu Android i przeprowadzić test przeciwko niemu?
Aktywność testowa jest dodawana do pliku manifestu, a pakiet wydaje się poprawnie ustawiony.
Próbowałem umieścić go w pakietach com.xxx (pakiet aplikacji) i com.xxx.test, bez powodzenia. Ale kiedy przenosimy TestActivity do docelowej aplikacji, wszystko działa dobrze. Zacząłem się zastanawiać, jaka jest różnica między projektem testowym a moją aplikacją i czy możliwe jest nawet wykonywanie działań w testowych projektach.
Kiedy zmienię targetPackage na self , zaczyna się nie udać z NoSuchMethodException na InstrumentationTestRunner.onCreate – basin
Miałem problemy z tym podejściem; Myślę, że jeśli pakiet/manifest/@ jest taki sam jak/manifest/instrumentation/@ android: targetPackage, testy skutecznie zastąpią testowaną aplikację, uniemożliwiając odniesienie do jej klas. Otrzymywałem ClassNotFoundExceptions. –
Mam pracę z tym podejściem, dodając dodatkowy AndroidManifest.xml w katalogu androidTest. Ale w nowszej wersji Androida Studio, od wersji 2.3.1 używam teraz, element '' nie jest potrzebny. –