首页 > 解决方案 > 从用 Android Studio 编写的 Login 类创建 Java 单元测试

问题描述

有人可以帮我做这个类的java单元测试吗?我已经尝试了很多次,但结果都不行,所以我希望你能帮助我。

public class Login extends AppCompatActivity {

    EditText email, password;
    Button login_button;
    TextView goToReg;
    ProgressBar progressBar;
    FirebaseAuth fAuth;

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

        email = findViewById( R.id.emailLog );
        password = findViewById( R.id.passwordLog );
        login_button = findViewById( R.id.buttonLog );
        goToReg = findViewById( R.id.gotoregistration );
        progressBar = findViewById( R.id.progressBarLog );

        fAuth = FirebaseAuth.getInstance();

        login_button.setOnClickListener( new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String mail = email.getText().toString().trim();
                String password_string = password.getText().toString().trim(); 

                if(TextUtils.isEmpty(mail))
                {
                    email.setError("Email requested!");
                    return;
                }
                if(TextUtils.isEmpty( password_string ))
                {
                    password.setError( "Password requested!" );
                    return;
                }
                if(password_string.length()<6)
                {
                    password.setError( " password must have more than 5 characters" );
                    return;
                }
                progressBar.setVisibility( View.VISIBLE );

                // User authentication
                fAuth.signInWithEmailAndPassword( mail, password_string ).addOnCompleteListener( new OnCompleteListener<AuthResult>() {
                    @Override
                    public void onComplete(@NonNull Task<AuthResult> task) {
                        if(task.isSuccessful()) {
                            Toast.makeText( Login.this, "Login done.", Toast.LENGTH_SHORT ).show();
                            startActivity( new Intent( getApplicationContext(), MainActivity.class ) );
                        }else{
                            Toast.makeText( Login.this, "Error: "+task.getException().getMessage(), Toast.LENGTH_SHORT ).show();
                            progressBar.setVisibility( View.INVISIBLE );
                        }
                    }
                });
            }
        } );

        goToReg.setOnClickListener( new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity( new Intent( getApplicationContext(), Registration.class ) );
            }
        } );
    }
}

这是我在Android Studio上编写的应用程序的Login类,还有其他类我必须测试并且与该类类似,所以我希望有人可以使用这个Login类创建一个示例并创建一个JUnit测试示例,所以我能理解这个过程。谢谢你。

标签: javaandroid-studiotestingjunit

解决方案


您只需测试您的登录是否根据您发送的数据有效。

请在此处查看以下内容以获取更多建议。例如,它会是这样的:

email = findViewById( R.id.emailLog );
password = findViewById( R.id.passwordLog );                
email.setText("email");
pass.setText("pass");
login_button = findViewById( R.id.buttonLog );
loginBtn.performClick();
assertTrue(loginActivity.isCurUserLoggedIn());

我还没有测试过这个,所以如果这个例子适合你,请告诉我。


推荐阅读