【发布时间】:2020-01-26 19:25:12
【问题描述】:
我有一个持有片段的活动。我创建它是为了能够运行到配置文件的深层链接。我还将 PROFILE_ID 作为查询参数传递。所以整个深层链接看起来是这样的:“tigranes://home/profile?profileId=3545664”。
class ProfileActivity : BaseActivity() {
companion object {
@JvmStatic
fun newInstance(context: Context, profileId: String): Intent {
val intent = Intent(context, ProfileActivity::class.java)
intent.putExtra(ProfileFragment.PROFILE_ID, profileId)
return intent
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val profileId: String = intent.getStringExtra(ProfileFragment.PROFILE_ID)
val transaction = supportFragmentManager.beginTransaction()
val fragment = ProfileFragment.newInstance(profileId)
transaction.add(R.id.fragment_container, fragment)
transaction.commit()
}
}
所以我的问题是,如果这个深层链接正在打开 ProfileActivity,那么编写测试检查的最佳策略是什么。我尝试使用 ActivityTestRule,但找不到将参数传递给它的方法。
【问题讨论】:
-
您创建片段的方式不正确。您应该在
if(savedInstanceState == null中执行初始 FragmentTransaction,否则您将有重叠的片段。 -
我知道 :) 问题是如何测试深层链接。
-
@TigranGhazinyan 回答了这个问题,但由于
ProfileActivity看起来很相似,它可能不会导致预期的结果......您仍然可以通过调用getIntent()来验证答案。
标签: android unit-testing kotlin deep-linking android-testing