Одним из преимуществ генерации кода является возможность увидеть, как используется особая языковая функция или структура. Как я уже говорил в бета-версии NetBeans 7.2: «Быстрее и полезнее» , бета-версия NetBeans 7.2 обеспечивает интеграцию TestNG . Я не стал более подробно останавливаться на этом посте, кроме одной ссылки на эту функцию, потому что я хотел посвятить этот пост этой теме. Я использую этот пост, чтобы продемонстрировать, как NetBeans 7.2 можно использовать, чтобы помочь новичку в TestNG начать использовать этот альтернативный (для JUnit ) тестовый фреймворк.
Мастер создания файлов в NetBeans 7.2 упрощает создание пустого контрольного теста TestNG. Это демонстрируется на следующих снимках экрана, которые запускаются с помощью New File | Модульные тесты (обратите внимание, что «Новый файл» доступен в раскрывающемся меню «Файл» или при щелчке правой кнопкой мыши в окне «Проекты»).
Запуск создания тестового набора TestNG, как показано выше, приводит к следующему сгенерированному тестовому коду.
TestNGDemo.java (создан NetBeans 7.2)
package dustin.examples; import org.testng.annotations.AfterMethod; import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeMethod; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; import org.testng.Assert; /** * * @author Dustin */ public class TestNGDemo { public TestNGDemo() { } @BeforeClass public void setUpClass() { } @AfterClass public void tearDownClass() { } @BeforeMethod public void setUp() { } @AfterMethod public void tearDown() { } // TODO add test methods here. // The methods must be annotated with annotation @Test. For example: // // @Test // public void hello() {} }
Тест, сгенерированный NetBeans 7.2, содержит комментарии, показывающие, как методы тестирования добавляются и аннотируются (аналогично современным версиям JUnit). В сгенерированном коде также показаны некоторые аннотации для полной настройки и разрыва тестового примера и для настройки и разборки для каждого теста (аннотации аналогичны JUnit). NetBeans идентифицирует операторы импорта, которые еще не используются в данный момент (import org.testng.annotations.Test; и import org.testng.Assert;), но, вероятно, будут использоваться и поэтому были включены в сгенерированный код.
Я могу легко добавить метод теста в этот сгенерированный тест. Следующий фрагмент кода представляет собой метод тестирования с использованием TestNG.
testIntegerArithmeticMultiplyIntegers ()
@Test public void testIntegerArithmeticMultiplyIntegers() { final IntegerArithmetic instance = new IntegerArithmetic(); final int[] integers = {4, 5, 6}; final int expectedProduct = 2 * 3 * 4 * 5 * 6; final int product = instance.multiplyIntegers(2, 3, integers); assertEquals(product, expectedProduct); }
Это, конечно, выглядит очень похоже на эквивалент JUnit, который я использовал для того же класса IntegerArithmetic, который я использовал для тестирования иллюстраций в постах Улучшение AssertEquals с помощью JUnit и Hamcrest и встроенной поддержки Hamcrest Core Matcher в JUnit. На следующем снимке экрана показан вывод в бета-версии NetBeans 7.2, если щелкнуть правой кнопкой мыши класс тестового примера и выбрать «Выполнить файл» (Shift + F6).
Текстовый вывод прогона TestNG, представленный в бета-версии NetBeans 7.2, воспроизводится следующим.
[TestNG] Running: Command line suite [VerboseTestNG] RUNNING: Suite: "Command line test" containing "1" Tests (config: null) [VerboseTestNG] INVOKING CONFIGURATION: "Command line test" - @BeforeClass dustin.examples.TestNGDemo.setUpClass() [VerboseTestNG] PASSED CONFIGURATION: "Command line test" - @BeforeClass dustin.examples.TestNGDemo.setUpClass() finished in 33 ms [VerboseTestNG] INVOKING CONFIGURATION: "Command line test" - @BeforeMethod dustin.examples.TestNGDemo.setUp() [VerboseTestNG] PASSED CONFIGURATION: "Command line test" - @BeforeMethod dustin.examples.TestNGDemo.setUp() finished in 2 ms [VerboseTestNG] INVOKING: "Command line test" - dustin.examples.TestNGDemo.testIntegerArithmeticMultiplyIntegers() [VerboseTestNG] PASSED: "Command line test" - dustin.examples.TestNGDemo.testIntegerArithmeticMultiplyIntegers() finished in 12 ms [VerboseTestNG] INVOKING CONFIGURATION: "Command line test" - @AfterMethod dustin.examples.TestNGDemo.tearDown() [VerboseTestNG] PASSED CONFIGURATION: "Command line test" - @AfterMethod dustin.examples.TestNGDemo.tearDown() finished in 1 ms [VerboseTestNG] INVOKING CONFIGURATION: "Command line test" - @AfterClass dustin.examples.TestNGDemo.tearDownClass() [VerboseTestNG] PASSED CONFIGURATION: "Command line test" - @AfterClass dustin.examples.TestNGDemo.tearDownClass() finished in 1 ms [VerboseTestNG] [VerboseTestNG] =============================================== [VerboseTestNG] Command line test [VerboseTestNG] Tests run: 1, Failures: 0, Skips: 0 [VerboseTestNG] =============================================== =============================================== Command line suite Total tests run: 1, Failures: 0, Skips: 0 =============================================== Deleting directory C:\Users\Dustin\AppData\Local\Temp\dustin.examples.TestNGDemo test: BUILD SUCCESSFUL (total time: 2 seconds)
В приведенном выше примере показано, как легко начать использовать TestNG, особенно если вы переходите на TestNG из JUnit и используете бета-версию NetBeans 7.2. Конечно, в TestNG есть гораздо больше, чем это, но изучение новой инфраструктуры обычно наиболее сложно в самом начале, и NetBeans 7.2 быстро ее запускает.