2014-07-24 40 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方法提供任何标记的好处,甚至是有害的。原因在于纯粹的获取者和设置者没有提供可以测试的业务功能。相反,它们是面向对象设计原理(信息隐藏)的一部分。