Положительное и отрицательное тестирование Junit

Вопрос: У меня есть задание, в котором мне нужно создать несколько тестов для моего кода. Мы должны использовать тесты Junit, поэтому я решил сделать положительное и отрицательное тестирование своих методов. Например, один тест для получения имени из ArrayList У меня есть положительное и отрицательное тестирование: Postive: public void testGetNamePositive() { Entry entry1 = new Entry("Susan

Вопрос:

У меня есть задание, в котором мне нужно создать несколько тестов для моего кода. Мы должны использовать тесты Junit, поэтому я решил сделать положительное и отрицательное тестирование своих методов.

Например, один тест для получения имени из ArrayList У меня есть положительное и отрицательное тестирование:

Postive:

public void testGetNamePositive() { Entry entry1 = new Entry(«Susan Holmes», «122 Harringdale», «Workington», «CA14 2GH»); assertEquals(«Susan Holmes»,entry1.getName()); }

Отрицательный:

public void testGetNameNegative() { Entry entry1 = new Entry(«Susan Holmes», «122 Harringdale», «Workington», «CA14 2GH»); assertFalse( entry1.getName() == «Alison»); }

Тест, о котором я не уверен, таков:

public void testEntryCreated() { Entry entry1 = new Entry(«Susan Holmes», «122 Harringdale», «Workington», «CA14 2GH»); assertNotNull(entry1); }

Есть ли отрицательное испытание на это?

Ответ №1

Предполагается, что публичный конструктор класса классов имеет некоторые аргументы, например, имя не может быть нулевым. Таким образом, вы можете написать отрицательный тест, подобный этому

@Test(expected = NullPointerException.class) public void testCreateEntryWithNameIsNullThrowsNPE() { Entry entry1 = new Entry(null, «122 Harringdale», «Workington», «CA14 2GH»); }

обратите внимание, что я использовал JUnit 4

Ответ №2

Я бы сказал, что тест testEntryCreated уже не нужен. Вы здесь не проверяете поведение своего класса, а скорее способность JVM правильно создавать объекты. Вместо этого сосредоточьтесь на тестировании того, как вы хотите, чтобы ваши объекты вели себя.

Ответ №3

Я не совсем уверен, что вы пытаетесь проверить здесь. Все, что вы сейчас тестируете, состоит в том, что переменная имени устанавливается правильно.

Когда вы тестируете устройство, вы хотите протестировать отдельные методы по отдельности (самый малый тестируемый блок) с отрицательным и положительным входами.

Ваш пример отрицательного теста выглядит следующим образом:

public void testGetNameNegative() { Entry entry1 = new Entry(«Susan Holmes», «122 Harringdale», «Workington», «CA14 2GH»); assertFalse( entry1.getName() == «Alison»); }

Это не отрицательный тест. То, что вы хотели бы проверить на отрицательный, – это, например, что имя не может содержать числа или быть пустой строкой:

public void testGetNameNegative() { Entry entry1 = new Entry(«123», «122 Harringdale», «Workington», «CA14 2GH»); //Expect some behaviour Entry entry1 = new Entry(«», «122 Harringdale», «Workington», «CA14 2GH»); //Expect some other behavior }

То, что вы ожидаете здесь, вероятно, является каким-то исключением, поскольку вы “тестируете” конструктор. Если бы это был метод, вы могли бы ожидать какое-то возвращаемое значение вместо исключения

Оцените статью
Добавить комментарий