对,所以我有一个MainActivity
,它的ID为fragment_container
。
我现在想编写一个测试来检查该视图是否正在显示。
@RunWith(AndroidJUnit4::class)
class Foo{
@get:Rule
val mainActivity = ActivityTestRule(MainActivity::class.java)
@Test fun startsWithFragmentContainerVisible(){
onView(withId(R.id.fragment_container))
.check(matches(isDisplayed()))
}
}
确定。如果用户已经登录,则可以正常工作。
因为他不在,活动将触发
private fun startLoginCycle(){
startActivity(Intent(this,LoginActivity::class.java))
}
这意味着fragment_container
隐藏在LoginActivity
后面。
这是我的MainActivity.onCreate
:
private lateinit var um: IUserManager
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
um = UserManager(this) //user manager needs a context to get access to shared preferences
/* [...] */
val au = um.activeUser
if(!au.isLoggedIn) startLoginCycle()
}
由于此测试不需要UserManager
的任何功能,因此我想模拟userManager
并使其activeUser
只是返回{{1 }}刚好登录。
我可以这样做吗?还是我需要编写一种方法来检查登录活动是否可见,如果可以,请使用一些测试帐户登录该应用程序?