Unittesting в Вала - PullRequest
       20

Unittesting в Вала

0 голосов
/ 17 июня 2019

Я сейчас написал несколько юнит-тестов с использованием встроенных блочных тестов GLibs в Vala. Это означает, что все сделано как:

class test_some_class{

    static void main(string[] args){

        Test.ref(args);

        Test.add_func("/some/path/test-some-functionality", test_some_functionality);

        Test.run();

    }

    static void test_some_functionality() {

        assert(true); //Or any other boolean expression such as 'a == b' as pointed out by @AlexB 

    }
}

В valadoc нет ничего, определяющего доступные функции для сравнения строк, двойных чисел и т. Д.

Хотя юнит-тестирование в целом утомительно (но необходимо), я нахожу его здесь особенно утомительным, но это довольно скромные юнит-тесты, в которых пропущено многое из того, что предлагается в JUnit и mstests (для .NET Core). Мне было интересно, может ли кто-нибудь порекомендовать хорошую платформу для тестирования юнитов, написанную для / с тестами GLib, которая предлагает нечто подобное?

Я смотрел на valadate, но, похоже, в наши дни он не привлекает к себе большого внимания, и, хотя он может не нуждаться в частых обновлениях, я не смог найти рабочие образцы, и вики тоже кажется не в сети. Если кто-то в настоящее время использует его, пожалуйста, говорите, и, пожалуйста, покажите несколько примеров.

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

1 Ответ

1 голос
/ 20 июня 2019

Как отмечали другие, к сожалению, в стандартной библиотеке нет отличного решения, тем более что многие из g_assert_foo методов GLib не работают или не имеют смысла в Vala.

Для Гири,Я принял этот подход , который использует основанную на классах инфраструктуру, аналогичную JUnit, и интегрируется в существующий тестовый комплект GLib, но изменил его, чтобы выдавать ошибки вместо использования простых вызовов assert(), и добавил поддержкуфиктивные объекты, более широкий диапазон assert_foo методов, обрабатывают ожидаемые / неожиданные ошибки и тестируют асинхронные методы.См. тестовый каталог в исходном коде Geary, в частности файлы test-case.vala и mock-object.vala.

. Он, безусловно, может использовать большую очистку, но не зависит от кода приложения Geary, ипоэтому может быть легко импортирован и использован в другом месте.Я был бы рад разделить его на отдельную библиотеку, если кто-то заинтересован в использовании и пополнении.

...