Тестирование-это утомительная работа, но достойная работа. Вы должны убедиться, что ваш проект будет надежным, прежде чем он будет выпущен.
В Nim Язык, есть много способов проверить вашу программу.
Для простоты вы можете объединить Когда Ismainmodule
и doassert
Чтобы проверить вашу программу.
Программы ниже не производят ошибки:
proc hello*(num: int): int = result = num + 4 when isMainModule: doAssert hello(1) == 5 doAssert hello(2) == 6 doAssert hello(3) != 6
Или вы можете использовать Unittest модуль.
Завет
который отличается от Unittest
интегрированный тест. Он поставляется с дистрибуцией NIM в качестве инструментов для тестирования.
Как использовать
Если вы хотите использовать Завет, убедитесь, что у вашего проекта есть каталог тестов. Например:
- example - src - main.nim - tests - test1.nim - test2.nim - dir - test1.nim - test2.nim
Программы в SRC
каталог:
# main.nim proc hello*(num: int): int = result = num + 4
Отмечает, что ваш файл тестов должен начинаться с символа ‘t’.
Отдельный файл
Это просто проверить один файл NIM. Измените свой текущий рабочий каталог на Пример
Анкет Вы можете опустить название тестов. Просто беги Завет R Test1.nim
или Завет R Dir/test1.nim
Анкет Конечно, Завет R тесты/test1.nim
и Testament R -тесты/dir/test1.nim
тоже правы.
В Test1.nim вы можете написать тесты подобным образом:
import ../src/main doAssert hello(1) == 5 block: doAssert hello(3) == 7 doAssertRaises(ValueError): raise newException(ValueError, "specific errors")
Может дать такие результаты, как это:
D:\cookbook\example>testament r test1.nim PASS: tests/test1.nim C ( 2.65 sec)
Несколько файлов
Завет все
будет тестировать только что -то в каталоге. А именно, Тесты/*/ta.nim
будет проверен. Однако Тесты/ta.nim
не будет проверен.
Если вы хотите проверить все файлы в каталоге тестов, вы можете использовать команду Завет кошка/
или Заветный кот.
.
Может дать такие результаты, как это:
D:\cookbook\example>testament cat / PASS: tests/dir/test1.nim C ( 0.83 sec) PASS: tests/test1.nim C ( 0.84 sec) PASS: tests/dir/test2.nim C ( 0.85 sec) PASS: tests/test2.nim C ( 0.88 sec)
D:\cookbook\example>testament cat . PASS: tests/dir/test1.nim C ( 0.23 sec) PASS: tests/dir/test2.nim C ( 0.44 sec) PASS: tests/test1.nim C ( 0.44 sec) PASS: tests/test2.nim C ( 0.57 sec)
Все параметры
Запустить команду Завет
Чтобы посмотреть все параметры.
Usage: testament [options] command [arguments] Command: p|pat|patternrun all the tests matching the given pattern all run all tests c|cat|category run all the tests of a certain category r|run run single test file html generate testresults.html from the database stats generate statistics about test cases Arguments: arguments are passed to the compiler Options: --print also print results to the console --simulate see what tests would be run but don't run them (for debugging) --failing only show failing/ignored tests --targets:"c c++ js objc" run tests for specified targets (default: all) --nim:path use a particular nim executable (default: $PATH/nim) --directory:dir Change to directory dir before reading the tests or doing anything else. --colors:on|off Turn messages coloring on|off. --backendLogging:on|off Disable or enable backend logging. By default turned on. --megatest:on|off Enable or disable megatest. Default is on. --skipFrom:file Read tests to skip from `file` - one test per line, # comments ignored
Укажите конфигурацию
Вы можете указать конфигурацию в передней части вашей программы.
Например, вы можете указать конфигурацию в main.nim:
discard """ cmd: "nim c -r --styleCheck:hint --panics:on $options $file" matrix: "--gc:arc; --gc:arc --d:release" targets: "c" nimout: "" action: "run" exitcode: 0 timeout: 60.0 """ import ../src/main doAssert hello(1) == 5 block: doAssert hello(3) == 7
Часто мне просто нужны изменения Матрица
параметры и укажите несколько конфигураций, разделенных ;
Анкет
Вы также можете указать строки, напечатанные программой:
discard """ output: ''' true false 1 ''' """ echo true echo false echo 1
Укажите сообщения об ошибках:
discard """ errormsg: "undeclared identifier: '++'" """ echo 12 ++ 1
Для получения более подробной информации, серфинга Nim Github Repo, чтобы получить больше интуиции.
https://github.com/nim-lang/Nim/tree/devel/tests
Использование реального мира
Я использую Завет
В моем проекте:
Пролог
https://github.com/planety/prologue/tree/master/tests
https://github.com/planety/prologue/blob/master/prologue.nimble
Официальные документы
http://nim-lang.github.io/Nim/testament.html
Вывод
NIM – это элегантный и эффективный язык программирования. И Завет
также является мощным тестовым инструментом. Найдите забавный проект и наслаждайтесь своей жизнью!
Оригинал: “https://dev.to/xflywind/how-to-use-testament-in-nim-1l0h”