如何测试toString()方法?

时间:2016-12-20 20:03:42

标签: java

如果我有这样的话:

public class Set {

    private ArrayList<String> testList;
    private String testString;

    public Set() {
    }

    public void add(String testString) {
        testList.add(testString);
    }

    public String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append(testString).append(System.getProperty("line.separator"));
        return sb.toString();
    }
}

如何在主方法中测试? 这是我到目前为止所尝试的......

Set test = new Set();
test.add("blah");
test.add("blahhh");
System.out.println(blah.toString());

我这样做是否正确?在高中学习我的第一门CS课程,我们应该创建一个实现toString()方法的课程。

4 个答案:

答案 0 :(得分:0)

您在询问测试;然后不要去打印语句。 转向单元测试环境,如JUnit;并编写真正的测试:

@Test
public testToStringWithTwoEntries() {
  Set underTest = new Set();
  underTest.add(...
  assertThat(underTest.toString(), is("blah, blahhh"));
}
例如,

。注意:

  • assertThat()只是各种不同断言方法中最强大的一种;它易于使用;只需了解它需要Hamcrest匹配器才能工作(这是is()来电的来源)
  • 你为你的班级命名&#34; Set&#34; ...... 糟糕的想法。已经有一个众所周知的接口java.util.Set。您从不想要重复使用此类名称。

答案 1 :(得分:0)

一个非常好的库,用于在模型类上测试toString:https://github.com/jparams/to-string-verifier

示例:

@Test
public void myTest()
{
    ToStringVerifier.forClass(Set.class).verify();
}

答案 2 :(得分:-1)

你创建了类Set的对象测试Set just now now now:

System.out.println(test);

将为您提供所需的结果,因为它将使用toString方法

并且未设置testString,因此toString将返回null

答案 3 :(得分:-1)

您可以通过这种方式测试toString,但为此您应该使用单元测试(请参阅junit)。

为了测试你的课程,你应该尝试使用不同类型的输入,看看,如果有人意外发生了什么,会发生什么。

您的代码中存在错误:

Set test = new Set();
test.add("blah");
test.add("blahhh");
System.out.println(blah.toString());

没有blah变量:

System.out.println(test.toString());

或只是:

System.out.println(test);

出于学习目的,你应该在你的toString中做一些更有用的事情。您可以尝试使用余额,所有者数据(名称,地址,...)创建一个类银行帐户,并在toString中创建一个有趣的输出。