Use*_*291 5 junit android mocking kotlin android-espresso
是的,所以我有一个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()))
}
}
Run Code Online (Sandbox Code Playgroud)
好的...如果用户已经登录,那么就可以了。
因为如果他不这样做,该活动就会触发
private fun startLoginCycle(){
startActivity(Intent(this,LoginActivity::class.java))
}
Run Code Online (Sandbox Code Playgroud)
这意味着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()
}
Run Code Online (Sandbox Code Playgroud)
由于此测试不需要任何 的UserManager功能,因此我想模拟userManager并让它简单地返回刚刚登录的activeUsera 的模拟。User
我可以这样做吗?或者我是否需要编写一个方法来检查登录活动是否可见,如果是,则使用一些测试帐户登录应用程序?