2016-12-20 3 views
-7

Если у меня есть что-то вроде этого:Как проверить метод toString()?

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().

+0

'System.out.println (blah.toString());' Что такое 'blah'? Это даст вам ошибку компиляции, если вы не объявили 'blah'. Протестируйте его так: 'System.out.println (test);' – rafid059

+1

Ваш 'toString' выведет' null'. Вы никогда не устанавливаете поле 'testString'. –

+1

Вы также можете получить разделитель строк, используя только '' System.lineSeparator() '] (https://docs.oracle.ком/JavaSE/7/документы/API/Java/языки/System.html # lineSeparator()). – 4castle

ответ

-1

вы creacted теста объекта класса Set просто написать теперь просто:

System.out.println(test); 

даст вам результат вы хотите, так как он будет использовать метод ToString

и ваша СравниваемаяСтрока не установлены так toString вернет нуль

-1

Вы можете протестировать ваш toString таким образом, но для этого вам следует использовать Unit Tests (см. junit).

Для тестирования вашего класса вы должны попробовать его с различными типами ввода, чтобы увидеть, что произойдет, если кто-то привнесет что-то неожиданное.

И у вас есть ошибки в коде:

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

Там нет переменной мля:

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

или просто:

System.out.println(test); 

Для целей обучения вы должны сделать что-то еще полезно в вашем toString. Вы можете попытаться создать учетную запись класса Class с балансом, данными о владельце (имя, адрес и т. Д.) И создать в toString интересный вывод.

0

Вы спрашиваете о тестировании; то не отправляйтесь за печать заявления. Включите единичную тестовую среду, например JUnit; и написать реальные тесты:

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

, например. Примечания:

  • assertThat() является просто одним из самых мощных различных методов assert; и он прост в использовании; нужно просто понять, что он требует, чтобы работали мастера Hamcrest (то есть, откуда звонит is())
  • вы назвали свой класс «Set» ... bad idea. Уже существует известный интерфейс java.util.Set. You never хотите повторно использовать такие имена.