2013-10-08 2 views
-1

У меня есть несколько методов в моем классеНаписание модульного теста в Java с основным методом

public class StringChecking 
{ 
public static void main(String[] args); 
public void stringChecker(String text, int number); //takes a string and prints that out. 
} 

Я хочу написать модульный тест, чтобы проверить «stringChecker()» метода. Мне было интересно, как я это сделаю. Когда я создаю объект типа StringChecking в моем классе JUnit Testing, я не могу получить доступ к методу stringChecker() из этого экземпляра.

Метод StringChecker выводит определенное количество слов текста, переданного в зависимости от параметра. Я хочу проверить, совпадают ли первые 10 слов, распечатываемых, как ожидаемые результаты.

тест JUnit класс

String expected = "My name is"; 
asserEquals(expected, actual); 

Я предполагаю, что у меня будет сделать мой метод stringChecker вернуть то, Симметричный сделать чек. Но я не понимаю, почему я не могу получить доступ к методу из класса тестирования.

+1

Как вы «обращаетесь» к методу? И, каково название, которое нужно делать с тем, что вы спрашиваете? .... –

+0

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

ответ

4

Если вы пытаетесь подтвердить значения, возвращаемые, то ваша сигнатура метода неверна - она ​​должна возвращать String. Оттуда вы можете выполнить обычную операцию с JUnit (ваш метод main не служит никакой цели в данном контексте):

@Test 
public void checkString() { 
    String expected = "My name is"; 
    int actual = 3; // assuming words in string 
    StringChecking testObj = new StringChecking(); 
    assertEquals(expected, testObj.stringChecker(expected + " Bob", 3); 
} 

Просто распечатывания значение утверждает/не утверждает ничего - они обеспечивают визуальное подтверждение того, что может быть часто неправильно или инвалид.

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

Это не значит, что вы можете никогда не проверить метод void, но в этом случае это не подходит.

7

Код будет легче протестировать, если вместо того, чтобы печатать цифры, метод возвращает их вызывающему.

Если вы хотите протестировать фактическую печать, вы можете set a spy object to System.out, чтобы вместо печати собирали данные. Тогда ваш тест может подтвердить правильность этого вывода.

Смежные вопросы