При разработката на софтуер модулното тестване е процес, който изолира и тества специални секции на приложение. Единиците са официалният термин за тези специални секции. Във вашето Java приложение единицата е метод.

Има много рамки за модулно тестване, достъпни за Java разработчици. Сред най-добрите рамки е JUnit 5.

Защо модулното тестване е важно?

Ако някога сте писали инструкции за отстраняване на грешки за отпечатване и проверка на стойността на променлива, поздравления; сте създали единичен тест. Тази част от кода за изхвърляне беше необходима, защото не получавахте желания резултат.

Но какво ще стане, ако получавате желания резултат и кодът все още съдържа грешка някъде? Може да внедрите приложението и тази грешка може да доведе до пробив в сигурността по-късно. За приложенията, които съхраняват потребителски данни, залозите са високи, когато има пробив в сигурността.

Единичното тестване е насочено към всеки раздел от вашето приложение – независимо дали в момента причинява грешка или не. Следователно тестването на единици играе важна роля в добра сигурност на софтуера.

instagram viewer

Какво е JUnit 5?

JUnit 5 е нещо повече от друга рамка за тестване на единици. Той има няколко подпроекта, а именно платформата JUnit, JUnit Jupiter и JUnit Vintage. Всеки от тези три компонента има уникални модули, които работят заедно за подобряване на тестването за Java програмисти.

Платформата JUnit 5 е налична в най-новите версии на най-добрите интегрирани платформи за разработка на Java (IDE). Java IDE, които поддържат JUnit 5, са:

  • IntelliJ ИДЕЯ
  • Затъмнение
  • NetBeans
  • Код на Visual Studio

Създаване на модулни тестове с JUnit 5

Тази примерна програма използва JUnit 5 за създаване на няколко модулни теста на просто приложение за калкулатор.

Класът калкулатор

пакет приложение;

публиченкласКалкулатор{
публиченстатиченвътрдобавете(вътр номер1, вътр номер2){
връщане num1 + num2;
}

публиченстатиченвътризваждам(вътр номер1, вътр номер2){
връщане num1 - num2;
}

публиченстатиченвътрумножават се(вътр номер1, вътр номер2){
връщане num1 * num2;
}

публиченстатиченвътрразделям(вътр номер1, вътр номер2){
връщане num1 / num2;
}
}

The Java клас по-горе изпълнява четири статични операции: събиране, изваждане, умножение и деление. Всеки метод приема два целочислени аргумента и връща една цяло число.

Тестовият клас JUnit 5

пакет тест;

импортиранестатичен org.junit. Твърди.*;
импортиране ап. Калкулатор;
импортиранеорг.junit.Тест;

публиченкласКалкулаторТест{
@Тест
публиченневалиденtestAdd(){
assertEquals(7, Калкулатор.добавете(3, 4));
}

@Тест
публиченневалиденtestSubtract(){
assertEquals(6, Калкулатор.изваждане(9, 3));
}

@Тест
публиченневалиденtestMultiply(){
assertEquals(10, Калкулатор.умножавам(5, 2));
}

@Тест
публиченневалиденtestDivide(){
assertEquals(2, Калкулатор.разделям(4, 2));
}
}

КалкулаторТест въвежда две важни понятия: @Тест анотация и assertEquals() метод. Анотацията @Test показва, че методът непосредствено под нея е тестов метод. В тестовия клас по-горе има четири тестови метода, по един за всяка от операциите на калкулатора.

Всички тестови методи използват метода assertEquals(). Този метод приема два задължителни аргумента и незадължителен трети аргумент. Първият аргумент, даден на метода assertEquals() по-горе, е очакваният резултат, а вторият аргумент е методът (или единицата), който искате да оцените.

Класът CalculatorTest няма основен метод, но анотациите JUnit @Test правят всеки от тестовите методи изпълним. Изпълнението на класа CalculatorTest в eclipse създава следния интерфейс:

Както можете да видите, всеки тест е успешен. Има четири теста и всички те преминаха без грешки или неуспехи.

Изучаването на модулно тестване може да разшири възможностите ви за кариера

Като разработчик, да знаете как да тествате софтуер е полезно умение. Това със сигурност ще подобри вашия работен процес и, да се надяваме, ще направи вашия код по-лесен за използване от другите. Има обаче клон на разработката на софтуер, който се фокусира единствено върху тестването. Тези инженери са известни като софтуерни тестери.