Как выполнить модульное тестирование без использования библиотеки? - PullRequest
0 голосов
/ 01 декабря 2010

Я никогда не писал ни одного модульного теста.Но так как каждая статья, которую я читаю, говорит о модульном тестировании.Я решил, что я должен начать с этим.

Но как?

Может ли кто-нибудь указать мне на очень простой пример с проверенным модулем Hello World?Без использования jUnit или лайков.

Ответы [ 3 ]

3 голосов
/ 01 декабря 2010

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

class Foo {
    public int bar(int input);
}

Теперь вы можете написать тестовый класс:

class TestFoo {
    public void testBarPositive() {
        Foo foo = new Foo();
        System.out.println(foo.bar(5) == 7);
    }

    public void testBarNegative() {
        Foo foo = new Foo();
        System.out.println(foo.bar(-5) == -7);
    }

    public static void main(String[] args) {
        TestFoo t = new TestFoo();
        t.testBarPositive();
        t.testBarNegative();
    }
}

Это очень простой пример, но он показывает вам, как вы можете написать свои собственные модульные тесты.

Тем не менее, я настоятельно рекомендую использовать такую ​​библиотеку, как JUnit. Это дает вам много бесплатно и удаляет огромное количество кода, который вы должны написать самостоятельно. Он также генерирует хорошие отчеты и (в сочетании с чем-то вроде Cobertura) может дать вам достаточно полное представление о том, насколько завершено ваше тестирование.

1 голос
/ 01 декабря 2010

Ознакомьтесь с JUnit Cook's Tour .

Я бы порекомендовал либо JUnit (версия 4.4 или выше), либо TestNG.

0 голосов
/ 01 декабря 2010

Я бы порекомендовал вам использовать другую библиотеку. Похоже, что вы хотите сделать, это создать свою собственную библиотеку модульного тестирования. Проблема заключается в том, что любые базовые проблемы с вашим кодом, любые логические ошибки, которые вы можете совершать, также вероятны для вас в коде модульного тестирования, так что да, ваши модули проходят тестирование, но только потому, что они делайте то, что вы от них ожидаете, а не потому, что это то, что они на самом деле ДОЛЖНЫ делать, используя строгие стандарты на любом языке, который вы используете.

Допустим, вы написали функцию, которая сравнивает true / false и возвращает 0. в PHP (0 == false) = true, но (0 === false) = false, если вы кодировали для сценария 1, но игнорировали сценарий 2, а затем напишите модульный тест, который проверяет, что сценарий 1 действителен, но игнорирует сценарий 2 (который вы могли бы, если бы всегда кодировали таким образом), тогда ваш модульный тест проходит на основе того, что вы определили, но все еще не соответствует действительности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...