#java #юнит_тесты
Начал вникать в unit test, потренировался на всяких простых арифметических операциях, все понятно. Есть конкретный метод который меняет буквы в слове: private static char[] exchangeCharInWord(char[] charArray, int first, int last ){ char tmp; tmp=charArray[first]; charArray[first]=charArray[last]; charArray[last]=tmp; return charArray; } никак не могу понять что мне здесь проверять.Вот начал писать... public class TestMyClass { @Test public void test() { MyClass c = new MyClass(); char[] word = {'h', 'e', 'l', 'o'}; int first = 0; int last = word.length-1; } }
Ответы
Ответ 1
Необходимо выделить возможные входные данные метода и результаты работы метода с этими данными. Например, такие тесты: Тест метода на корректных данных (проверяем, что метод правильно меняет местами символы массива): public void validInput_shouldSwap() {...} Тест метода при отрицательных значениях индексов (индекса): public void negativeIndex_shouldThrow() {...} Тест метода, если индексы выходят за границы массива: public void outOfBoundIndexValues_shouldThrow() {...} В зависимости от реализации метода 2 и 3 тесты можно объединить в один. Соответственно внутри каждого теста проверяете результаты работы метода с ожидаемыми.Ответ 2
Немного обобщу ответ от Pavel Parshin. Для практически любого метода должны быть юнит-тесты нескольких типов: Проверить, что метод корректно работает с корректными входными данными. В вашем случае -- действительно меняет символы в позициях first и last местами. Проверить "угловые случаи". В вашем случае -- когда значения first и last совпадают. Строка при этом измениться не должна. Проверить работу метода с некорректными данными. В вашем случае -- когда один из индексов (или оба) выходят за пределы массива. Обычно метод должен падать с исключением типа ArgumentException. Второй случай может вам "подсказать" добавить проверку: если индексы совпадают, то можно просто выйти из метода. Третий случай выявляет одно из преимуществ написания тестов -- вы забыли проверить входные данные на валидность. Упавший тест "напомнит" вам об этом. Причем я бы рекомендовал писать тесты в "обратном" порядке -- от некорректных случаев к корректным. Это позволит сразу указать все нужные проверки и обойти самые простые ошибки.
Комментариев нет:
Отправить комментарий