java - 如何对我的 MainActivity 进行单元测试?

标签 java android unit-testing dependency-injection

据我了解,单元测试更多的是编写实际上可测试的代码,而不是编写实际的测试。

为了编写可测试的代码,至少在像 java 这样的语言中,我可能应该使用依赖注入(inject),对吗?我当前正在编写的应用程序不使用任何 DI。

但是我想首先为我的 MainActivity 编写单元测试,如下所示:

public class MainActivity extends AppCompatActivity implements View.OnClickListener{

    private ImageButton buttonPlay;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //setting the orientation to landscape
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

        //Prevent screen from dimming when app is running
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

        //getting the button and adding click listener
        buttonPlay = (ImageButton) findViewById(R.id.buttonPlay);
        buttonPlay.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {

        //starting game activity
        startActivity(new Intent(this, GameActivity.class));
    }

}

我应该对这里的每种方法进行测试吗?比如 onCreate()、setContentView()、setRequestedOrientation() 等?因为我什至不确定我会对这些方法断言什么。

最佳答案

您可以使用本地单元测试(基于 JVM)或 Espresso 单元测试或两者都使用! 简而言之,通过本地单元测试,您可以测试调用函数(在模拟其依赖项(如果有)之后)是否会导致调用某个所需的函数。 通过 Espresso 单元测试,您可以测试应用程序的流程。 我会推荐this如果您想在 Android 中开始单元测试,请使用 Codelab。

关于java - 如何对我的 MainActivity 进行单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46142852/

相关文章:

java - 内存不足错误 - 优化?

javascript - 如何改变每次测试之间的 spy 结果

email - 我需要找到文件路径以在我的应用程序中附加多个文件以发送其他人

java - 尝试在 Eclipse 中执行 boolean 方法时出错

java - 具有非唯一键的排序映射

android - 可以让应用程序在设定时间后自行删除/销毁/停止工作吗?

java - 将一个对象的引用传递给另一个类中的另一个方法

android - 重用 ViewModels - 将使用它的每个屏幕的状态

unit-testing - Grails应用程序Spock测试失败

c# - 单元测试多线程代码时出现问题