2016-10-19 2 views
1

Я застреваю в 1 очко и нуждаюсь в предложениях.Мутация убийства

При написании junit для моего кода я не могу убить мутацию ValidateArgument.notNull (arg1) !!!
Нужны предложения.

код следует как ..

public class A{ 

    public void method1(Object B){ 

      ValidateArgument.notNull(B); 
      .. 
      .. 
      .. 
    } 
} 

Получение

## удаленный вызов ком/Nokia/ОСС/конфигуратор/рац/общие/Util/ValidateArgument :: NotNull → ВЫЖИЛ

как возвращаемый тип void Какие могут быть возможные способы убить эту мутацию?

+1

Подсказка: varriable names go camelCase, даже если они всего лишь один символ и пример кода ;-) – GhostCat

+0

Учитывая ваш комментарий к моему ответу ... он усложняется. Итак, первое, что вы хотите сделать: обратитесь в центр помощи, чтобы прочитать о том, «как спросить». Вы видите, вы говорите нам, что что-то не работает. Но вы не даете никаких подробных сведений. Например: какие инструменты вы используете, какая версия ... Короче говоря: если вы хотите, чтобы мы помогали, вы должны предоставить минимальный, полный и жизнеспособный пример в своем вопросе - чтобы у людей была возможность понять, где ваша установка нарушена , Как есть, на ваш вопрос можно ** не ответить **. – GhostCat

+0

И как совет: в случае * другие * фрагменты кода могут быть убиты; может быть, вам нужно искать там различия. – GhostCat

ответ

0

Какова цель ValidateArgument.notNull(B);?

Мы знаем из вашего теста, что он выбрасывает исключение NullPointerException при передаче null, является ли это все, что вам нужно?

Если это так, вы должны удалить эту строку кода, поскольку она бесполезна - вы все равно получите исключение NullPointerException при вызове метода1. то есть поведение, указанное вашим тестом, одинаково.

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

Однако многие программисты не пишут тесты, которые определяют поведение таких утверждений, как это (имеет ли смысл делать это, будет зависеть от контекста/домена, в котором вы работаете).

У Pitest есть функция, которая позволяет избежать создания мутаций в проблемах, которые обычно не проверяются на единицу (другой общий журнал регистрируется).

Если вы добавите full.package.name.ValidateArgument к параметру конфигурации avoidCallsTo, эта мутация больше не будет производиться.

+0

Спасибо за ваши комментарии. Я использовал ValidateArgument.notNull (B); чтобы избежать ненужного выполнения моего кода. Если кто-то будет ссылаться на мой метод с нулем в этом случае, а не на выполнение кода и ждет строки, которая даст мне NullPointerException. Мой код просто даст мне исключение при запуске и сохранит мое время обработки. Это было единственное, почему я использовал это. – CryoMancer

1

Гадание здесь: у вас есть тест, который вызывает метод с нулевой для B?

Вы видите, скорее всего, что метод проверки должен выдавать исключение, когда B равно null. Когда вы никогда не проверяете метод с нулевым значением, это не имеет значения, если эта строка действительно выполнена или нет!

+0

yes У меня есть тест, который вызывает метод с нулем. мой тестовый пример: - – CryoMancer

+0

@Test (ожидается = NullPointerException.class) public void testForvalidation() { testObject.method1 (null); } но все же я не могу убить мутацию. – CryoMancer

+2

Выполняется ли тест, если вы закомментируете ValidateArgument.notNull (B); линия? – henry

Смежные вопросы