Приклад застосування бібліотеки JUnit

Бібліотека JUnit спрощує й багато в чому автоматизує процес написання тестів і найчастіше дуже знижує необхідність використати стандартний вивід або ж отладчик для тестування класів.

Для демонстрації основних можливостей JUnit Framework, розглянемо примітивний клас мовою Java і будемо його тестировать. Цей клас буде мати два методи - знаходження факторіала й суми двох чисел:

 

public class MathFunc {

private int variable;

public MathFunc() {

variable = 0;

} public MathFunc(int var) {

variable = var;

}

public int getVariable() {

return variable;

}

public void setVariable(int variable) {

this. variable = variable;

}

public long factorial() {

long result = 1;

if (variable > 1) {

for (int i=1; i<=variable; i++)

result = result*i;

}

return result;

}

public long plus(int var) {

long result = variable + var;

return result;

}

}

Для написання тестового класу нам потрібно створити спадкоємця junit.framework.TestCase. Напишемо стільки тестових методів, скільки захочемо:

public class TestClass extends TestCase {

public void testFactorialNull() {

MathFunc math = new MathFunc();

assertNotNull (math);

assertTrue (math.factorial() == 1);

}

 

Метод assertTrue перевіряє, чи є результат вираження вірним. Деякі інші методи, які можуть придатися - assertEquals, assertFalse, assertNull, assertNotNull, assertSame.

Для того, щоб об'єднати тести, можна скористатися класом TestSuite з його методами addTest або addTestSuite.

- addTest - дозволяє додавати окремі тести із класу до загального набору

- addTestSuite - дозволяє додати весь клас із усіма його тестами до загального набору.

Нарешті, для запуску всіх тестів можна скористатися плагином JUnit для Eclipse або інший IDE, де вибрати відповідний клас або пакет класів і вибрати RunJUnit Tests. Також можна запустити тести й без використання IDE. Для цього потрібно скористатися класом TestRunner. Существуюет текстовий варіант junit.textui.TestRunner (вивід результатів відбувається на консоль) і графічний - junit.swingui.TestRunner або junit.awtui.TestRunner. Відповідно необхідно написати наступний метод main:

public class AllTests {

/**

* If no arguments supplied, then text ui is used.

* <ul>

* <li>-t argument for text ui</li>

* <li>-s argument for swing ui</li>

* </ul>

*/

public static void main(String[] args) {

if ((args.length == 0) || (args[0].equals("-t")))

junit.textui.TestRunner.run(AllTests.suite());

else if (args[0].equals("-s"))

junit.swingui.TestRunner.run(AllTests. class);

}

public static Test suite() {

TestSuite suite = new TestSuite("Test for MathFunc");

//$JUnit-BEGIN$

suite.addTestSuite(TestClass);

//$JUnit-END$

return suite;

}

}

public void testFactorialPositive() {

MathFunc math = new MathFunc(5);

assertEquals (120, math.factorial());

}

public void testPlus() {

MathFunc math = new MathFunc(45);

assertTrue (math.plus(123) == 168);

}

}


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: