JUnit тестирование для assertEqual NullPointerException



Я не уверен, почему тестовый случай не имеет вывода true. Оба случая должны дать NullPointerException.



Я пробовал делать это (не совсем то же самое, но это дает и вывод true) :



    String nullStr = null;

//@Test
public int NullOutput1() {
nullStr.indexOf(3);
return 0;
}

//@Test(expected=NullPointerException.class)
public int NullOutput2() {
nullStr.indexOf(2);
return 0;
}

@Test(expected=NullPointerException.class)
public void testboth() {
assertEquals(NullOutput1(), NullOutput2());
}


Бегун:



import org.junit.runner.JUnitCore;
import org.junit.runner.Result;
import org.junit.runner.notification.Failure;

public class TestRunnerStringMethods {
public static void main(String[] args) {
Result result = JUnitCore.runClasses(TestJunitMyIndexOf.class);
for (Failure failure : result.getFailures()) {
System.out.println(failure.toString());
}
System.out.println(result.wasSuccessful());
}
}


Метод:



public static int myIndexOf(char[] str, int ch, int index) {
if (str == null) {
throw new NullPointerException();
}
// increase efficiency
if (str.length <= index || index < 0) {
return -1;
}
for (int i = index; i < str.length; i++) {
if (index == str[i]) {
return i;
}
}
// if not found
return -1;
}


Тестовый Случай:



@Test(expected=NullPointerException.class)
public void testNullInput() {
assertEquals(nullString.indexOf(3), StringMethods.myIndexOf(null, 'd',3));
}
555   2  

2 ответов:

Я полагаю, что вы хотите использовать fail здесь:

@Test(expected=NullPointerException.class)
public void testNullInput() {
    fail(nullString.indexOf(3));
}

Обязательно добавьте import static org.junit.Assert.fail;, если это необходимо.

В Java 8 и JUnit 5 (Jupiter) мы можем утверждать для исключений следующее. Используя org.junit.jupiter.api.Assertions.assertThrows

Общественная статический Т assertThrows(класса expectedType, Executable исполняемый файл)

Утверждает, что выполнение предоставленного исполняемого файла вызывает исключение типа expectedType и возвращает исключение.

Если исключение не возникает, или если возникает исключение другого типа, этот метод потерпит неудачу.

Если вы не хотите выполнять дополнительные проверки экземпляра исключения, просто проигнорируйте возвращаемое значение.

@Test
public void itShouldThrowNullPointerExceptionWhenBlahBlah() {
    assertThrows(NullPointerException.class,
            ()->{
            //do whatever you want to do here
            //ex : objectName.thisMethodShoulThrowNullPointerExceptionForNullParameter(null);
            });
}
Этот подход будет использовать функциональный интерфейс Executable в org.junit.jupiter.api.

См. :

Comments

    Ничего не найдено.