Есть ли планы по включению покрытия кода? Я нашел https://github.com/gotwarlost/istanbul/issues/132 , но, похоже, нет хорошего способа сделать это. (Меня конкретно интересует огурец)
Во-первых, я не думаю, что покрытие кода должно быть частью ваших интеграционных тестов. Сначала вы должны написать модульные тесты и убедиться, что у вас есть приличное покрытие кода. Затем Selenium/WebdriverIO должен охватывать сквозную интеграцию вашего стека.
Однако вы можете сделать то же самое, как описано в этой теме, используя WebdriverIO. Вместо использования синтаксиса selenium-webdriver просто используйте команды WebdriverIOs:
client.execute("return window.__coverage__;").then(function (obj) {
var str = JSON.stringify(obj);
var options = {
port: 8888,
host: "localhost",
path: "/coverage/client",
method: "POST",
headers: {
"Content-Type": "application/json",
}
};
var req = http.request(options, function (res) {
console.log("\nFinished sending coverage data.");
done();
});
req.write(str);
req.end();
});
Но опять же, вы не должны включать покрытие кода в свои интеграционные тесты.
@Христиан-броманн
мне интересно, почему вы считаете, что отчеты о покрытии не должны быть частью функциональных тестов
Потому что с WebdriverIO вы пишете тесты e2e, которые должны тестировать бизнес-кейсы от начала до конца (как следует из названия). Поэтому вы тестируете не код, а конкретный пользовательский поток. Вы пытаетесь охватить все бизнес-аспекты своего приложения. Даже если технически вы можете зафиксировать объем кода, который был выполнен во внешнем интерфейсе, это не имеет смысла, потому что это совсем не интересно для ваших бизнес-кейсов.
С модульными тестами вы на самом деле выполняете тестовый код, поэтому покрытие кода важно, чтобы увидеть, насколько хорошо вы справляетесь с тестированием. В данном случае это имеет значение.
Не стесняйтесь фиксировать отчет о покрытии в функциональном тесте, но в конечном итоге вы попытаетесь сделать этот отчет хорошим, написав больше e2e-тестов вместо модульных или интеграционных тестов. Все дело в том, что вы пытаетесь протестировать и какие инструменты вы для этого используете.
Самый полезный комментарий
Потому что с WebdriverIO вы пишете тесты e2e, которые должны тестировать бизнес-кейсы от начала до конца (как следует из названия). Поэтому вы тестируете не код, а конкретный пользовательский поток. Вы пытаетесь охватить все бизнес-аспекты своего приложения. Даже если технически вы можете зафиксировать объем кода, который был выполнен во внешнем интерфейсе, это не имеет смысла, потому что это совсем не интересно для ваших бизнес-кейсов.
С модульными тестами вы на самом деле выполняете тестовый код, поэтому покрытие кода важно, чтобы увидеть, насколько хорошо вы справляетесь с тестированием. В данном случае это имеет значение.
Не стесняйтесь фиксировать отчет о покрытии в функциональном тесте, но в конечном итоге вы попытаетесь сделать этот отчет хорошим, написав больше e2e-тестов вместо модульных или интеграционных тестов. Все дело в том, что вы пытаетесь протестировать и какие инструменты вы для этого используете.