简体   繁体   English

Android:Espresso:按意图进行的初始化活动-java.lang.RuntimeException:无法启动活动

[英]Android:Espresso: init activity by intent - java.lang.RuntimeException: Could not launch activity

I want before start activity to init it by intent. 我希望在开始活动之前通过意图将其初始化。 So I override method getActivityIntent Here Espresso's test: 所以我在这里重写了方法getActivityIntent Espresso的测试:

@RunWith(AndroidJUnit4::class)
class TraderDetailsActivityTest {
//val context = InstrumentationRegistry.getInstrumentation().getTargetContext()

   @Rule
   @JvmField
   var traiderDetailsActivityTestRule: ActivityTestRule<TraderDetailsActivity> = object : ActivityTestRule<TraderDetailsActivity>(TraderDetailsActivity::class.java) {
      override fun getActivityIntent(): Intent {
         val intent = Intent(InstrumentationRegistry.getInstrumentation().context, TraderDetailsActivity::class.java)
         val bundle = Bundle()
         val trader = Trader();
         bundle.putSerializable(TraderDetailsActivity.TRADER, trader)
         intent.putExtras(bundle)
         return intent
      }
   }

   @Test
   fun toolBar_height() {
      Espresso.onView(ViewMatchers.withId(R.id.toolBar))
                   .check(ViewAssertions.matches(CustomMatchers.withHeightResId(R.dimen.tool_bar_height)))
   }
}

But when start test I get error: 但是开始测试时出现错误:

Started running tests

java.lang.RuntimeException: Could not launch activity
at androidx.test.runner.MonitoringInstrumentation.startActivitySync(MonitoringInstrumentation.java:473)
at androidx.test.rule.ActivityTestRule.launchActivity(ActivityTestRule.java:358)
at androidx.test.rule.ActivityTestRule$ActivityStatement.evaluate(ActivityTestRule.java:529)
at org.junit.rules.RunRules.evaluate(RunRules.java:20)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at androidx.test.runner.AndroidJUnit4.run(AndroidJUnit4.java:104)
at org.junit.runners.Suite.runChild(Suite.java:128)
at org.junit.runners.Suite.runChild(Suite.java:27)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
at org.junit.runner.JUnitCore.run(JUnitCore.java:115)
at androidx.test.internal.runner.TestExecutor.execute(TestExecutor.java:56)
at androidx.test.runner.AndroidJUnitRunner.onStart(AndroidJUnitRunner.java:389)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1879)
Caused by: java.lang.RuntimeException: Unable to resolve activity for: Intent { flg=0x14000000 cmp=com.myproject.test/md.dotfinance.tm.android.ui.activity.TraderDetailsActivity (has extras) }
at android.app.Instrumentation.startActivitySync(Instrumentation.java:385)
at androidx.test.runner.MonitoringInstrumentation.access$201(MonitoringInstrumentation.java:99)
at androidx.test.runner.MonitoringInstrumentation$4.call(MonitoringInstrumentation.java:449)
at androidx.test.runner.MonitoringInstrumentation$4.call(MonitoringInstrumentation.java:446)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
at java.lang.Thread.run(Thread.java:818)

Tests ran to completion.

Try doing it this way: 尝试以这种方式进行操作:

@get:Rule
var activityRule: ActivityTestRule<YourActivity> =
   ActivityTestRule(YourActivity::class.java, false, false)

@Before
fun setupTest() {
   val intent.putExtras = Intent()
   val bundle = Bundle()
   val trader = Trader();
   bundle.putSerializable(TraderDetailsActivity.TRADER, trader)
   intent.putExtras(bundle)
   activityRule.launchActivity(intent)
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 java.lang.RuntimeException:无法启动活动 - java.lang.RuntimeException: Could not launch activity Google Espresso java.lang.RuntimeException:无法启动意图 Intent { act=android.intent.action.MAIN - Google Espresso java.lang.RuntimeException: Could not launch intent Intent { act=android.intent.action.MAIN 意图不会启动活动(java.lang.RuntimeException:无法启动活动) - Intent won't launch activity (java.lang.RuntimeException: Unable to start activity) android-java.lang.RuntimeException-地图活动 - android - java.lang.RuntimeException - maps activity 带有不确定ProgressBar的UI的“ java.lang.RuntimeException:无法启动意图” - “java.lang.RuntimeException: Could not launch intent” for UI with indeterminate ProgressBar Android-java.lang.RuntimeException:无法启动活动 - Android - java.lang.RuntimeException: Unable to start activity 初学者Android java.lang.RuntimeException:无法实例化活动 - Beginner Android java.lang.RuntimeException: Unable to instantiate activity java.lang.RuntimeException:无法启动活动ComponentInfo Android清单 - java.lang.RuntimeException: Unable to start activity ComponentInfo Android Manifest Android Studio:java.lang.RuntimeException:无法启动活动 - Android Studio: java.lang.RuntimeException: Unable to start activity Android JSON:java.lang.RuntimeException:无法启动活动ComponentInfo - Android JSON: java.lang.RuntimeException: Unable to start activity ComponentInfo
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM