gpt4 book ai didi

android - Android中单元测试的奇怪行为

转载 作者:搜寻专家 更新时间:2023-11-01 09:37:12 25 4
gpt4 key购买 nike

我在 Android 中遇到一些单元测试问题。每当我运行测试时,它们总是会失败,但是测试的预期结果和实际结果总是相同

enter image description here

测试的目的是检查用户是否登录的 bool 值的共享首选项,如果他们登录,就像这种情况一样,显示 DashboardActivity,如果他们没有登录,那么他们被带到 LoginActivity。

这是测试:

@Test
public void splashActivityLaunchesDashboard(){
SharedPreferences sharedPreferences = RuntimeEnvironment.application.getSharedPreferences("UNISAAS", Context.MODE_PRIVATE);
sharedPreferences.edit().putBoolean(Constants.PREF_USER_LOGGED_IN, true).commit();

Class clazz = DashbordActivity.class;
Intent expectedIntent2 = new Intent(activity, clazz);

presenter.checkUserLoggedIn(sharedPreferences);
ShadowActivity shadowActivity = Shadows.shadowOf(activity);
Intent actualIntent2 = shadowActivity.getNextStartedActivity();
assertEquals(expectedIntent2, actualIntent2);
}

以及被测试的逻辑:

@Override
public void checkUserLoggedIn(SharedPreferences preferences) {

if (preferences.getBoolean(Constants.PREF_USER_LOGGED_IN, false)) {
mSplashView.switchToDashboard();
} else {
mSplashView.switchToLogin();
}
}

@Override
public void switchToLogin() {
Intent loginIntent = new Intent(this, LoginActivity.class);
startActivity(loginIntent);
}

@Override
public void switchToDashboard() {
Intent dashboardIntent = new Intent(this, DashbordActivity.class);
startActivity(dashboardIntent);
}

最佳答案

您的初始屏幕是否在处理程序中?这可能是问题所在。请尝试以下操作。

    new Handler().postDelayed(new Runnable() {
@Override
public void run() {
presenter.checkUserLoggedIn(sharedPreferences);
ShadowActivity shadowActivity = Shadows.shadowOf(activity);
Intent actualIntent2 = shadowActivity.getNextStartedActivity();
assertEquals(expectedIntent2, actualIntent2);
}
}, timeHere);

希望这能奏效!

关于android - Android中单元测试的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42162369/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com