2017-03-31 18 views
1

Android Studioを使用して、JavaのOn CreateおよびOnClickメソッドのユニットテストを作成した経験がありますか?私はFirebasedatabaseのデータを使用しています。 私はモックオブジェクトを使用しなければならないと思うが、どこから始めるべきかはわからない。AndroidアクティビティのJunitテスト

の下では、私のクラスからのコードLoginActivity

public class LoginActivity extends AppCompatActivity implements View.OnClickListener{ 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_login); 
     mfireBaseAuth = FirebaseAuth.getInstance(); 
     mDatabase = FirebaseDatabase.getInstance().getReference(); 
     mProgressDialog = new ProgressDialog(this); 
     editTextEmail = (EditText) findViewById(R.id.editTextEmail); 
     editTextPassword = (EditText) findViewById(R.id.editTextPassword); 
     buttonSignIn = (Button) findViewById(R.id.buttonSignIn); 
     textViewSignUp = (TextView) findViewById(R.id.textViewSignUp); 

     buttonSignIn.setOnClickListener(this); 
     textViewSignUp.setOnClickListener(this); 

    } 

    @Override 
    public void onClick(View v) { 
     if(v == buttonSignIn){ 
      usersignin(); 

     } 
     if(v==textViewSignUp){ 
      startActivity(new Intent(this, RegisterActivity.class)); 
     } 
     } 

    private void usersignin() { 
     String email = editTextEmail.getText().toString().trim(); 
     String password = editTextPassword.getText().toString().trim(); 

     if(TextUtils.isEmpty(email)){ 
      Toast.makeText(this, "Please enter Email", Toast.LENGTH_SHORT).show(); 
      return; 
     } 

     if(TextUtils.isEmpty(password)){ 
      Toast.makeText(this, "Please enter password", Toast.LENGTH_SHORT).show(); 
      return; 
     } 

     mProgressDialog.setMessage("Logging in. Please wait..."); 
     mProgressDialog.show(); 
     mfireBaseAuth.signInWithEmailAndPassword(email, password).addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { 
      @Override 
      public void onComplete(@NonNull Task<AuthResult> task) { 
       mProgressDialog.dismiss(); 
       if(task.isSuccessful()){ 
        getSignedInUserProfile(); 
       } 
      } 
     }); 
    } 

    private void getSignedInUserProfile() { 

     DatabaseReference reference = mDatabase;//.child("eduback-2feef"); 
     firebaseUser = FirebaseAuth.getInstance().getCurrentUser(); 
     userID = firebaseUser.getUid(); 
     reference.child("Users").child(userID).child("User info").addListenerForSingleValueEvent(new ValueEventListener() { 
      @Override 
      public void onDataChange(DataSnapshot dataSnapshot) { 
       User user = dataSnapshot.getValue(User.class); 
       if(user != null) { 
        // Save if the user is student or prof in shared prefs. 
        PreferenceHelper helper = new PreferenceHelper(getBaseContext()); 
        helper.setIsStudent(user.isStudent); 
        checkStudentOrProfessor(user); 
       } 

      } 

      @Override 
      public void onCancelled(DatabaseError databaseError) { 
       // Ups vis error 
      } 
     }); 



    } 

    private void checkStudentOrProfessor(User user) { 

     Intent i; 
     if (user.isStudent) { 
      i = new Intent(this, MainActivityStudent.class); 
     } else { 
      i = new Intent(this, MainActivityProfessor.class); 
     } 
     startActivity(i); 


    } 



} 

答えて

0

であるJava用Mockitoモックフレームワークは、Androidのユニットテストとの互換性を提供しています。

呼び出されると特定の値を返すようにモックオブジェクトを設定できます。

Firebasedatabassをテストする必要はありません。

しかし、あなたはあなたのためにFirebasedatabaseラッパークラスを作成する必要があるが

+0

(ユーザID、user.isStudent)変数を含める必要が

ラッパークラスを表示あなたは私の例を与えることはできますか? – MeryT

関連する問題