【发布时间】:2018-12-10 17:37:54
【问题描述】:
我目前正在编写我的第一个 android 项目,我想根据依赖注入模式对其进行重构。从我的应用程序中最简单的活动开始 - 启动屏幕 - 我问自己,我是否正确理解了模式的概念。
这是到目前为止我的SplashActivity 的代码:
public class SplashActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash);
Fragment fragmentToDisplay = null;
if (!(getIntent().getBooleanExtra("isLaunch", true))) {
fragmentToDisplay = new LoginFragment();
} else {
if (savedInstanceState == null) {
fragmentToDisplay = new SplashFragment();
}
}
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, fragmentToDisplay).commit();
}
}
根据 IntentExtra "isLaunch" 的内容,我想显示不同的片段。现在,我读到每个new ServiceXY() 都会使代码的可测试性降低,这实际上不是依赖注入的目标。所以我像这样重构了我的代码:
public class SplashActivity extends AppCompatActivity {
private SplashFragment splashFragment;
private LoginFragment loginFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash);
splashFragment = new SplashFragment();
loginFragment = new LoginFragment();
Fragment fragmentToDisplay = null;
if (!(getIntent().getBooleanExtra("isLaunch", true))) {
fragmentToDisplay = loginFragment;
} else {
if (savedInstanceState == null) {
fragmentToDisplay = splashFragment;
}
}
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, fragmentToDisplay).commit();
}
}
但是,这似乎并没有太大的不同。如果我想测试,如果显示正确的片段,这将如何提高我的代码的可测试性?谢谢转发。
【问题讨论】:
-
“我已经读到每个新的 ServiceXY() 都会使代码的可测试性降低” 你在哪里读到这个?我认为,由于片段(重构代码)的可用参考,可测试性变得更好。
标签: android android-fragments testing android-activity dependency-injection