пятница, 13 июня 2014 г.

Работа с junit из консоли

Junit - библиотека для unit тестирования программ на языке java.
Что такое unit тестирование? Это тестирование конкретного класса, нескольких классов, а при использовании Selenium Webdriver можно тестировать и web интерфейс.
Для работы с junit нужен установленный jdk, нужно скачать со страницы https://github.com/junit-team/junit/wiki/Download-and-Install файлы junit.jar и hamcrest-core.jar. Положим эти файлы в рабочую папку.
Например, рабочая программа находится в папке D:\work\. Создадим там файл программы prog.java с текстом:

public class prog {
public static void main(String[] args) {
  int d = a(2,3);
  System.out.println(d);
  }
 public static int a (int b, int c){
  return b+c;
 
 }
}
Тут есть метод а, который вычисляет сумму двух чисел.
Компиляция: нужно перейти в папку с программой и выполнить компиляцию командой: javac prog.java
После компиляции в папке должен появиться файл с названием prog.class, его можно запустить командой java prog.
Сейчас напишем тест. Нужно создать файл, например test.java, с текстом:


import static org.junit.Assert.*;
import org.junit.Test;
public class test {
@Test
public void testprog() {  
  assertSame((prog.a(4, 6)), 10);  
 }
}

Подключаем библиотеки Junit: Test и Assert. Аннотация @Test означает, что далее идет тестовый метод. Существуют другие аннотации, например @Before(методы, которые выполняются до теста), @After(выполняются после теста), и другие.
Далее идет assertSame, который вызывает метод a с нужными параметрами, тут 4,6 и сравнивает их сумму с эталонным значением 10.
Скомпилируем файл test.java: javac -cp .;hamcrest-core-1.3.jar;junit-4.11.jar -d . test.java
В папке появится скомпилированный тест: test.class. Запустим: java -cp .;hamcrest-core-1.3.jar;juint-4.11.jar org.junit.runner.JUnitCore test.class
Выполненный тест обозначается точкой. Если изменить числа в тестовом методе, например, assertSame((prog.a(1,2),10), снова откомпилировать и запустить, то тест провалится.