1.3 KiB
test subcommand
The erg command has a subcommand called test, which supports test implementation and execution.
Test decorator (@Test)
Erg tests the @Test
subroutine in the tests
directory in the package or in the *.test.er
file with the erg test
command.
tests
subroutines are in charge of black-box testing (not testing private functions), and *.test.er
subroutines are in charge of white-box testing (testing private functions as well).
# tests/test1.er
{add; ...} = import "foo"
@Test
test_1_plus_n(n: Nat) =
assert add(1, n) == n + 1
The execution result is displayed as a summary and can be output in various file formats (.md, .csv, etc.).
Doc Test
In Erg, #
and #[
are comment lines, but ##
and #[[
are doc comments, and comments can be displayed as markdown from editors such as VSCode.
Furthermore, the source code in the doc comment is automatically tested with the erg test command if erg is specified.
Below is an example test.
VMs =...
...
#[[
execute commands.
```erg
# VM in standard configuration
{vm1; ...} = import "tests/mock"
assert vm1.exec!("i = 0") == None
assert vm1.exec!("i").try_into(Int)? == 0
```
]]#
.exec! ref self, src =
...
...
Mock objects (mock objects) used for testing are defined in the tests/mock
module.