Добрый день! Есть класс, содержащий метод, который просто выводит одно поле класса. Каким образом протестируете этот метод?
Есть вариант перенаправить поток вывода. Хотелось бы услышать еще варианты.
А можно немного больше деталей ? Куда выводит ? Какой тест вы хотите написать - unit, integration, end2end ? Зачем вам вообще нужно в первую очередь это тестировать ?
Хочу написать unit тест.
public class MyClass {
private String type= "abc";
public void doSomething(){
System.out.println(type);
}
}
А смысл этого теста ? Что вы хотите этим проверить ? Что system.out.println работает ?
1 лайк
Как вариант можете попрообвать вот этот подход -
1 лайк
Как првило все сводится к перенаправлению потока. Вариант:
class Something{
private String message="Hello, world!"
public void doSomething(){
System.out.println(message);
}
}
class Test{
private ByteArrayOutputStream output = new ByteArrayOutputStream();
public void testDoSomething(){
PrintStream old=System.out;
Something something=new Something;
System.setOut(new PrintStream(output));
something.doSomething();
Assert.assertEquals(output.toString().replaceAll("\n",""), ваш_текст,"Successfully brings text");
//обрезаем /n, если println, так как "ваш текст" без /n
System.setOut(old);
}
}
Еще можно записать в файл и считать от туда
2 лайка