Webdriverio: Покрытие кода

Созданный на 4 янв. 2016  ·  3Комментарии  ·  Источник: webdriverio/webdriverio

Есть ли планы по включению покрытия кода? Я нашел https://github.com/gotwarlost/istanbul/issues/132 , но, похоже, нет хорошего способа сделать это. (Меня конкретно интересует огурец)

Самый полезный комментарий

Потому что с WebdriverIO вы пишете тесты e2e, которые должны тестировать бизнес-кейсы от начала до конца (как следует из названия). Поэтому вы тестируете не код, а конкретный пользовательский поток. Вы пытаетесь охватить все бизнес-аспекты своего приложения. Даже если технически вы можете зафиксировать объем кода, который был выполнен во внешнем интерфейсе, это не имеет смысла, потому что это совсем не интересно для ваших бизнес-кейсов.

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

Не стесняйтесь фиксировать отчет о покрытии в функциональном тесте, но в конечном итоге вы попытаетесь сделать этот отчет хорошим, написав больше e2e-тестов вместо модульных или интеграционных тестов. Все дело в том, что вы пытаетесь протестировать и какие инструменты вы для этого используете.

Все 3 Комментарий

Во-первых, я не думаю, что покрытие кода должно быть частью ваших интеграционных тестов. Сначала вы должны написать модульные тесты и убедиться, что у вас есть приличное покрытие кода. Затем 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-тестов вместо модульных или интеграционных тестов. Все дело в том, что вы пытаетесь протестировать и какие инструменты вы для этого используете.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги