2016-02-19 4 views
2

Я пишу блок-тесты для углового (используя Jasmine Framework и Karma) для запуска тестовых примеров. Мне нужно покрыть код, используя Coverage-html (Стамбул).Каковы факторы покрытия и есть ли Алгоритм расчета покрытия?

Есть другой тип покрытия:

  1. Функция.
  2. Отрасли
  3. отчётность
  4. Линии
  5. Игнорируется (с помощью Стамбул можно пренебречь).

Пожалуйста, объясните различный тип покрытия и основные факторы, необходимо позаботиться при написании дел модульного тестирования:

function setCookie(sessionId) { 
    if(sessionId) { 
     setCookie('sessionId', sessionId, 21600); 
    } else { 
     setCookie('sessionId', session.getId(), 21600); 
    } 
} 

я написал тестовые случаи для этого:

describe('setCookie()', function(){ 
    it('should be set a cookie without expiration days', function() { 
     var defered =$q.defer(); 
     spyOn(sessionCard, 'setCookie').andCallFake(function(){ 
       return defered.promise; 
     }) 
     sessionCard.setCookie('sessionId', 'sessionId'); 
     expect(document.cookie).toBeDefined(); 
     expect(document.cookie).toBeTruthy(); 
    }); 
}) 
+0

отрасль покрытия означает, что вы покрыли все возможные условия. Например, если (x === true) {do this} else {do ​​that} имеет две ветви, где x - true, а где - нет. Если вы напишете тест для этого, где x истинно, тогда у вас будет 50% -ный охват филиалов. –

ответ

0

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

Существует множество сценариев для каждой функции для записи теста.

  1. Все заявления рассматриваются по крайней мере один раз
  2. Все счастливые сценарии пути покрыты
  3. Все не в состоянии безопасных условий (отрицательные сценарии/то есть исключение блоков) являются укрыты

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

+0

Taj, я полностью согласился с вашим ответом. Однако, когда я накрыл свой тестовый код (100% i.e функции и утверждения). охват для филиала по-прежнему составляет 55%. Я не понимаю Алгоритм, стоящий за этим. – harsh

+0

Прежде всего, ваш код не может быть проверен на 100%, если у вас нет всех филиалов. Может быть что-то с вашей конфигурацией покрытия, потому что вы должны иметь все ваши заявления + все покрытые филиалы, чтобы сделать общее покрытие 100% –

+0

okay получил его сейчас ... Может быть, это поможет Спасибо – harsh

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