Тест Junit: что такое отказ? - PullRequest
0 голосов
/ 06 июля 2011

Что именно это означает, если результат теста junit "Неудачный"?Я предполагаю, что во время теста произошло исключение, но я не могу найти информацию об этом.также строка в трассировке ошибок:

Assert.assertTrue(result);

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

Ответы [ 7 ]

3 голосов
/ 06 июля 2011

Assert.assertTrue (результат);

Это утверждение не будет выполнено, если результат будет ложным, и вы получите AssertionError. Автор теста хочет убедиться, что результат верный, а если он ложный, то что-то не так, и вам следует проверить код, тестируемый выше.

2 голосов
/ 08 июля 2011

Ваш вопрос, похоже, является разницей между "Отказом" и "Ошибкой", поскольку оба заканчивают тем, что выдают Исключение.

"Отказ" - это место в вашем тесте, где что-точто вы ожидаете, не произойдет.В тесте, подобном следующему:

  TestedObject testedObject = new TestedObject(); // This is the object we test
  boolean something = testedObject.computeSomething(); // The tested method
  Assert.assertTrue("Something should be true", something);
  // following of the test

Если результат ваших вычислений (переменная'thing ') неверен, это означает, что метод computeSomething работает, но не так, как ожидалось;это «провал».Возможно, причиной является логическая ошибка в методе.

Если метод computeSomething () выдает непредвиденное исключение (NPE в вычислении или что-то еще), то это также означает, что метод не работает, но потенциальноболее «жестоким» образом (отсутствует зависимость, угловой случай, который не обрабатывается и т. д.).В методе должна быть некоторая обработка исключений.Это будет называться «Ошибка» на языке JUnit.

Теперь в обоих случаях это означает, что метод не работает, и будет выдано исключение (либо вашим кодом, либо Assert.assertXXX).методы) и пойман TestRunner.Также нередко просто сказать в обоих случаях, что «тест не пройден»;потому что важно то, что в TestedObject нужно выполнить некоторую работу, чтобы вернуть зеленую полосу.

Конечно, иногда вы хотите проверить, что ваш код на самом деле выдает исключение, поэтому вы должны написать что-тонапример:

  TestedObject testedObject = new TestedObject(); // This is the object we test
  try {
    // The tested method, that is expected to throw an Exeption when given null
    boolean something = testedObject.computeSomething(null); 
    Assert.fail("The computation should have failed");
  } catch (IllegalArgumentException e) {
    // Pass - This is the expected behavior
  }

В этом случае создание исключения не должно вызывать ни ошибок, ни ошибок;наоборот, если выбрано исключение , а не , проверка должна провалиться.

0 голосов
/ 06 июля 2011

Это не означает, что произошла исключительная ситуация, только то, что код возвратил другое значение, чем указано в вашем тесте. Замените ваш код на
Assert.asserFalse(result);
И посмотрите, не провалится ли этот тест

0 голосов
/ 06 июля 2011

Это просто означает, что значение результата вашей логической переменной равно false.

Assert.assertTrue(result);

означает, что вы хотите проверить, является ли «результат» истинным. Обратите внимание на имя метода assertTrue. Тестовый случай может пройти, если и только если result = true В противном случае дело считается неудачным.

Когда вы не получаете то, что ожидаете, это провал. Это не должно быть исключением. Если вы ожидаете, что подпрограмма кода возвратит X, а вы получите Y, то это неудачный контрольный пример.

0 голосов
/ 06 июля 2011

Из документации -

A Failure содержит описание неудачного теста и исключение, которое было сгенерировано во время его выполнения. В большинстве случаев описание будет одного теста. Однако, если возникают проблемы при создании теста (например, если метод BeforeClass не является статическим), он может описывать что-то, кроме одного теста.

Как правило, failure означает, что ваше утверждение о результатах теста не удалось.

0 голосов
/ 06 июля 2011

Сбой обычно означает, что подтверждение не выполнено.Исключения отслеживаются отдельно (под ошибками, iirc).

0 голосов
/ 06 июля 2011

Когда тест JUnit "Неудачный", вы получили AssertionException.Значит, в вашем случае результат был ложным, где он должен был быть правдой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...