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

testng
java
Теги: #<Tag:0x00007fedbc19ab48> #<Tag:0x00007fedbc19aa08>

(Artem Khoruziy) #1

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


(Andrew Zakordonets) #2

А можно немного больше деталей ? Куда выводит ? Какой тест вы хотите написать - unit, integration, end2end ? Зачем вам вообще нужно в первую очередь это тестировать ?


(Artem Khoruziy) #3

Хочу написать unit тест.

public class MyClass {
    private String type= "abc";
    public void doSomething(){
    	 System.out.println(type);
    }
}

(Andrew Zakordonets) #4

А смысл этого теста ? Что вы хотите этим проверить ? Что system.out.println работает ?


(Andrew Zakordonets) #5

Как вариант можете попрообвать вот этот подход -


(Egor Ryaboshapko) #6

Как првило все сводится к перенаправлению потока. Вариант:

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);
  }
}

Еще можно записать в файл и считать от туда