2017-10-04 19 views
0

どのようなエラー/アサーションエラーを処理する適切な方法は、1つのテストケースでエラーが発生した場合でも、 1つのJavaScriptファイルに1つのテストケースしか持たない方がいいですか?適切な方法でアサーションエラーが発生し、後でテストを実行できない

describe('SMP Service Login Page', function() { 
    describe('Loggin in', function() { 
     // Unhappy flow always first 
     var assert = require('assert'); 
     var useridField; 
     var passwordField; 
     var loginButton; 
     it('should not allow user to login with wrong userid', function(done) { 
      throw new Error("haha"); 

     });   
     it('should fail because of assertion', function(done) {    
      useridField = browser.element('android=new UiSelector().text("User Name").className("android.widget.EditText")');     
      useridField.setValue('FIRST'); 
      console.log(useridField); 

      passwordField = browser.element('android=new UiSelector().className("android.widget.EditText").instance(1)');     
      passwordField.setValue('FIRST'); 

      loginButton = browser.element('android=new UiSelector().resourceId("android:id/button1")'); 
      var text = loginButton.getText(); //text = 'LOG IN'    
      assert.equal(text,'LOG'); //this should fail , throws an error  
      loginButton.click(done); 
     }); 
//this test doesn't get run cause of assertion error thrown 

     it('should pass but it fails because it could not locate the useridField', function(done) {    
      console.log(useridField); 
      useridField.setValue('userid'); 

      passwordField = browser.element('android=new UiSelector().className("android.widget.EditText").instance(1)');    
      passwordField.setValue('passsword'); 

      loginButton = browser.element('android=new UiSelector().resourceId("android:id/button1")');    
      loginButton.click(done);   
     }); 
    }); 
}); 

答えて

2

最良の方法は、テストを互いに独立しているということに書くことです。コードでは、最後のテストがuseridFieldを設定する前のテストに依存してはならないことを示しています。それを初期化するコードをbeforeEachフックに移動することができます。

+0

yeap。私は失敗したアサーションがスローされることに気付きました。現在のテストランナーがエラーを報告し、テストを続行する方法はありません。 – user1166085

関連する問題