При написании тестов мы практически всегда используем утверждения, большинство из которых находятся в классе Assert.
Данный класс содержит набор утверждений, которые крайне облегчают процесс тестирования. Записываются только те утверждения, которые не прошли.
Ниже приведены наиболее важные методы класса Assert:
№ | Методы и описание |
---|---|
1 | |
2 | void assertTrue(boolean expected, boolean actual)
Проверяет истинность утверждения |
3 | void assertFalse(boolean condition)
Проверяет ложность утверждения |
4 | void assertNotNull(Object object)
Проверяет, что объект не является null |
5 | void assertNull(Object object)
Проверяет, является ли объект null |
6 | void assertSame(boolean condition)
Проверяет, ссылаются ли ссылки двух объектов на один и тот же объект. |
7 | void assertNotSame(boolean condition)
Проверяет, не ссылаются ли ссылки двух объектов на один и тот же объект. |
Рассмотрим простой пример:
Класс AssertionTests.java
package net.proselyte.tutorials;
import org.junit.Assert;
import org.junit.Test;
import static org.junit.Assert.*;
/**
* Simple test class that demonstrates {@link Assert} in action
*
* @author Eugene Suleimanov
* @version 1.0
*/
public class AssertionTests {
@Test
public void shouldDemonstrateAssertionsTest() {
Integer first = 1;
Integer second = 2;
Integer repeatFirst = 1;
Integer[] expectedIntegerArray = {1, 2, 3, 4, 5};
Integer[] resultIntegerArray = {1, 2, 3, 4, 5};
assertEquals(first,repeatFirst);
assertNotNull(second);
assertSame(first, repeatFirst);
assertArrayEquals(expectedIntegerArray, resultIntegerArray);
}
}
В результате работы данного теста мы получим следующий результат:
Аннотации
Здесь и в предыдущих примерах мы использовали аннотации.
Аннотации представляют собой, своего рода, теги, которые мы добавляем в код и применяем их к классам и методам. По назначению мы можем их разделить на следующие группы:
- игнорируют методы и классы
- запускаются перед и после всех методов
- запускаются до и после всех тестовых методов
Сейчас мы подробно рассмотрим наиболее часто используемые из них:
№ | Аннотации и описание |
---|---|
1 | @Test
Указывает, что данный метод (public void) может быть запущен, как тестовый случай. |
2 | @Before
Методы с данной аннотацией запускаются перед каждым тестом. |
3 | @After
Методы с данной аннотацией запускаются после каждого теста. |
4 | @BeforeClass
Запускается один раз перед запуском любого тестового метода в классе (метод должен быть статическим). |
5 | @AfterClass
Запускается один раз после запуска любого тестового метода в классе (метод должен быть статическим). |
6 | @Ignore
Тестовые методы с данной аннотацией не будут выполнены. |
Рассмотрим следующий пример:
Создадим класс AnnotationTests.java
package net.proselyte.tutorials.junit;
import org.junit.*;
/**
* Test class to demonstrate annotations in action
*
* @author Eugene Suliemanov
* @version 1.0
*/
public class AnnotationTests {
@BeforeClass
public static void beforeClass(){
System.out.println("This method has been executed first...");
}
@AfterClass
public static void afterClass(){
System.out.println("This method has been executed last...");
}
@Before
public void before(){
System.out.println("Before each test");
}
@After
public void after(){
System.out.println("After each test");
}
@Test
public void simpleTest(){
System.out.println("This is simple test");
}
@Ignore
@Test
public void ignoreTest(){
System.out.println("This test will be ignored");
}
}
В результате работы данного класса мы получим следующий результат:
На этом мы заканчиваем изучение фреймворка JUnit.
Для более подробного изучения данной технологии крайне рекомендую вам изучить книгу “JUnit in Action”. Она даст хорошее понимание как самого фреймворка, так и примеров его использования.