Статьи

В среде IDE NetBeans 7.2 представлен TestNG

Одним из преимуществ генерации кода является возможность увидеть, как используется особая языковая функция или структура. Как я уже говорил в бета-версии 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 быстро ее запускает.