2013-08-01 56 views
1

我有一種方法Login"First class"。現在在我的"Second class"再次登錄需要完成,所以任何人都可以告訴我什麼是最簡單的方法來完成這項任務?最簡單的方法來調用一個相同的方法在兩個不同的類junit

  1. 應該在第二類中創建第一類的對象並調用第一類的方法。
  2. 我應該創建基類並擴展它嗎?

請提供任何例如,如果可能的 感謝

+0

如果'First'和'Second'類的'Login'是相同的,那麼只需在基類中創建它,並在兩個類中使用它...也可以重寫此方法,如果它在孩子類...通過第二種方法,將涉及更好的繼承... – NREZ

+0

嘿謝謝,快速回復:)。你能否告訴我是否可以在擴展基類時提及任何執行順序。例如:我在Base類中編寫了「login」方法並在「First Class」中進行了擴展,現在我已經在「First Class」中說了另一種方法(addtest),所以我可以提及它應該首先執行的任何執行順序然後(addtest) – user2376425

+0

@ user2376425:這兩個類是什麼?他們的類是否包含junit測試,還是有些不同? –

回答

1

好吧,讓我來回答這個問題在這裏:

class MyBase 
{ 
    void Login() 
    { 
     // TODO base defined login here 
    } 
} 

class FirstClass extends MyBase 
{ 
    // Define your methods in any order it is fine 

    void Login() 
    { 
     // TODO firstclass defined login here 
    } 

    void addTest() 
    { 
     // Addtest code here 
    } 
} 

int main() 
{ 
    MyBase base; 
    FirstClass firstClass; 

    base.Login() // Will call the MyBase method for Login 
    firstClass.Login() // Will call the FirstClass method for Login 
} 

所以的定義方法的順序,只要不是重要的,因爲你是很好的做他們。如果可能,請閱讀Java中的Inheritance,以便更清楚地瞭解您的方法。

你現在完全明白這一點..?如果是,那麼開始編碼,如果沒有,然後讓我知道,我們會更深入...

+0

非常感謝您的答案,它有點解決我的查詢:) – user2376425

+0

@NREZ - 這有什麼幫助?你已經定義了一些你稱之爲「MyBase」的東西,但是你並沒有將它用作基類,因爲沒有東西是從它繼承的。你已經定義了兩個不同的Login()方法,這是OP試圖擺脫的問題。 –

+0

感謝您指出@vincebowdren ...我忘了擴展MyBase類,儘管不知何故OP和我瞭解它...我也試圖保持它作爲一個非常簡單的原型... – NREZ

1

我會建議實施Page Object Model,並重構登錄代碼是一個代表登錄屏幕的對象的方法。這樣,任何需要執行登錄的測試用例都可以輕鬆使用登錄代碼。該代碼將看起來像這樣簡化版本:

public class LogInScreen { 

    public void LogIn(String username, String password) { 
     userNameTextField.sendKeys(username); 
     passwordTextField.sendKeys(password); 
     loginButton.click(); 
    } 

public class MyTests { 

    @Test 
    public void testLoginNormalUser() { 
     String username = "userA"; 
     String password = "badg3rs"; 
     publicscreen.LogIn(username, password); 
     // carry on with the rest of the test. 
    } 

    @Test 
    public void testLoginAdminUser() { 
     String username = "userB"; 
     String password = "3lk"; 
     publicscreen.LogIn(username, password); 
     // carry on with the rest of the test. 
    } 

通知的好處,你從這個獲得:

  1. 與登錄控件交互的代碼在代表登錄屏幕的類;測試用例代碼不需要太多關注UI細節,所以每個@test都可以關注測試邏輯。
  2. 任何測試用例都可以調用login()方法。
  3. 很簡單:不需要繼承或重載。
+0

是的,這當然可以做個更好的實現... @ user2376425你應該試試這個... – NREZ

相關問題