Добавьте метод теста к существующему контрольному примеру, выделив имя метода в Eclipse
Не уверен, что это возможно, но это сэкономит мне много времени. Когда я создаю тестовый пример Junit4 в Eclise, я обычно не включаю все методы, которые я хотел бы сначала протестировать, а затем я хотел бы добавить непроверенные методы или новые методы в тестовый пример. В настоящее время я делаю это, вводя новые тестовые методы в существующий класс тестовых случаев. Могу ли я выделить имя метода и создать контрольный пример, если он еще не существует, или добавить его в существующий контрольный пример в Eclipse? Заранее спасибо!
Дэвид
3 ответа
Нет. Но, честно говоря, в любом случае у вас не должно быть однозначного сопоставления тестов с методами. Я думаю, что вторая страница диалога Eclipse "Create JUnit TestCase" очень плохо спроектирована, потому что она создает впечатление, что сопоставление "один к одному" как-то полезно.
У вас должно быть ровно столько тестов, сколько требуется для полного тестирования каждого метода, и каждый тест должен проверять только один аспект поведения метода. Так что если вам нужно два, три или четыре теста, это нормально.
Что приводит меня к утверждению, что нужная вам функциональность не будет чрезвычайно полезной, потому что вам все равно нужно будет добавлять гораздо больше методов тестирования!
Создайте новый JUnit как обычно, но используйте другое имя для класса, скажем JavaClassTest2, затем скопируйте и вставьте сгенерированный метод.
Не по теме:
Я предпочитаю отображение "один к одному", если не найду лучшего подхода с использованием одного метода для сценария. Я хочу избежать очень многих тестовых сценариев, определенных именами тестовых методов. Что я делаю, это следую этой схеме:
- Перечислите возможные тестовые сценарии на основе javadoc и ожиданий в виде сообщения об ошибке теста. Это служит индексом сценария, поэтому я могу легко вернуться к тому сценарию, который мог пропустить.
Реализуйте тест для каждого сценария по абзацу после индексации шага 1 для имен переменных.
@Test public void testRemoveHtmlTags() { String[] test = { "0. Null argument test failed.", "1. Case sensitive test failed.", "2. Case insensitive test failed." }; try { StringUtils.removeHtmlTags(null); fail(test[0]); } catch (IllegalArgumentException iae) {} String input1 = "The quick Brown <b>Fox</b> Jumps Over The Lazy Dog. ><"; String output1 = StringUtils.removeHtmlTags(input1); assertEquals(test[1], "The quick Brown Fox Jumps Over The Lazy Dog. ><", output1); String input2 = "The quick Brown <B>Fox</b> Jumps Over The Lazy Dog. ><"; String output2 = StringUtils.removeHtmlTags(input2); assertEquals(test[2], "The quick Brown Fox Jumps Over The Lazy Dog. ><", output2);
}
Невозможно. Кроме того, один метод не означает, что у вас есть только один тестовый сценарий для него. Как сказал @Danny, вам нужно придумать несколько тестовых случаев, чтобы протестировать все возможные полезные сценарии для этого одного метода. Если вы объедините все эти тестовые сценарии в один большой тестовый сценарий, то он не будет слишком полезным. Это связано с тем, что при сбое этого тестового сценария вам придется углубиться в тестовый набор, чтобы узнать, какой сценарий дает сбой, а это громоздко.
Чтобы протестировать один метод, обычно (если нет, всегда) лучше иметь много маленьких тестовых наборов, а не один большой тестовый набор. Когда он терпит неудачу, вы точно знаете, какой тестовый сценарий терпит неудачу сразу.