2014-07-24 76 views
1

我有一個有這些方法的類。將來會有一種設置電子郵件和密碼變量的方法。但是這些變量永遠無法從課堂外進行設置。如何測試這些方法?如何測試Java getter方法

public class Auth { 
    private String email; 
    private String password; 

    public String getEmail(){ 
     return this.email; 
    } 

    public String getPassword(){ 
     return this.password; 
    } 
} 
+0

*某些*必須將這些字段設置爲值,否則它們完全無用,應該刪除。你是問你將如何實現TDD並測試未完成的組件? –

+0

通常我不會將「get」描述爲一個工作單元。首先,'set'然後'get' - 這是一個最小的UOW。我可能不會測試它,因爲我認爲可以肯定地說'A = A'。 –

+0

設置字段的唯一方法是通過反射。所以如果你真的想測試這些虛擬獲得者(我不會),使用反射來設置字段。 –

回答

3

不考干將,但一些明智的單位/使用情況。東西必須是創造這些對象,它是這個單位的一部分。

例如:

@Test 
public void shouldCreateAuthFromColonSeparated() { 
    Auth auth = authFactory.create("[email protected]:secret"); 
    assertThat(auth.getEmail(), is("[email protected]")); 
    assertThat(auth.getPassword(), is("secret")); 
} 
0

理想情況下,你需要設置的JUnit使用setUp()重寫方法是否密碼將在您的Auth類進行設置。

您需要做的下一件事是從數據庫/ whereStStored獲取實際密碼的值,並將其與getPassword()值進行比較。

對於測試,那麼你可以撥打:

Auth authObj = ...; //your Auth object where password is set 
assertTrue(dbPassword.equals(authObj.getPassword()), true); 
1

測試getter和setter方法提供任何標記的好處,甚至是有害的。原因在於純粹的獲取者和設置者沒有提供可以測試的業務功能。相反,它們是面向對象設計原理(信息隱藏)的一部分。