Почему охват кода измеряется в тестовых примерах? - PullRequest
0 голосов
/ 30 декабря 2018

Я измерил покрытие кода с помощью EclEmma.Я ожидал, что тестируются только исходные пакеты.Удивительно, но также измеряются тестовые случаи JUnit.

public class EmailTest {

public static final String VALID_MAIL = "xyz@qwe.abc";

public static final String INVALID_MAIL_WITHOUT_AT = "xyzqwe.abc";

@Test
public void shouldCreateValidEmail() {
    Email email = null;
    try {
        email = new Email (VALID_MAIL);
    } catch (NotValidEmailException e) {
        Assert.fail();
    }
    Assert.assertEquals("Email: " + VALID_MAIL + " should be correct created", VALID_MAIL, email.getEmail());
}

@Test(expected = NotValidEmailException.class)
public void shouldThrowExceptionWhenMailHasNoAt() throws NotValidEmailException {
    new Email (INVALID_MAIL_WITHOUT_AT);
}

Например, у меня есть базовый тестовый пример для проверки правильности по электронной почте.Покрытие теста для этого тестового класса "EmailTest" составляет 73%.Тестируемый класс «Электронная почта» покрыт на 100%.

Почему измеряется покрытие кода в тестовых примерах и для чего это нужно?

Ответы [ 2 ]

0 голосов
/ 31 декабря 2018

Вы можете исключить тестовый код из покрытия, но не должны.Покрытие предназначено, чтобы рассказать вам важные вещи о вашем коде.Ваш тестовый код также важен.Например, у вас может быть код в ваших помощниках по тестированию, который никогда не запускается: вы можете удалить этот код.Или у вас могут быть случайно написанные тестовые строки, которые по какой-либо причине никогда не выполняются.

Единственная причина исключить тестовый код - это если вы поставили себе какую-то произвольную цель, такую ​​как охват 75%, и не хотите "обмануть ", включив ваши тесты.Эти цели не имеют смысла, поэтому не позволяйте им ограничивать то, что вы узнаете из освещения.

0 голосов
/ 30 декабря 2018

Тестовые пакеты могут быть исключены из области анализа мер покрытия кода.

Покрытие как -> Конфигурации покрытия -> Покрытие -> Область анализа

...