Тестировние метода, который ничего не возвращает.

Добрый день! Есть класс, содержащий метод, который просто выводит одно поле класса. Каким образом протестируете этот метод?
Есть вариант перенаправить поток вывода. Хотелось бы услышать еще варианты.

А можно немного больше деталей ? Куда выводит ? Какой тест вы хотите написать - 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 лайка