Pic*_*ent 6 unit-testing julia
使用Base.Test
我的单元测试,我被立即退出第一次测试失败后立即感到惊讶。
让我们考虑一下这个runtest.jl
文件:
using Base.Test
@testset "First" begin
# test fails
@test false
end;
@testset "Second" begin
# never run...
@test true
end;
Run Code Online (Sandbox Code Playgroud)
的输出julia runtest.jl
始终为(永远不会运行第二个测试):
Run Code Online (Sandbox Code Playgroud)First: Test Failed Expression: false Stacktrace: [1] macro expansion at /home/picaud/Temp/runtests.jl:14 [inlined] [2] macro expansion at ./test.jl:860 [inlined] [3] anonymous at ./<missing>:? Test Summary: | Fail Total First | 1 1 ERROR: LoadError: Some tests did not pass: 0 passed, 1 failed, 0 errored, 0 broken.
我的问题:即使某些测试失败,如何运行并报告所有测试结果?
阅读Julia doc 的“测试集”,似乎必须系统地使用嵌套测试集:
通常,使用大量测试来确保功能在一定范围的输入范围内正常工作。如果测试失败,则默认行为是立即抛出异常。但是,通常最好先运行其余测试,以更好地了解正在测试的代码中有多少错误。
后来这句话:
@testset()宏可用于将测试分组。将运行测试集中的所有测试,并在测试集结束时打印摘要。
在前面的特殊示例中,
using Base.Test
@testset "All tests" begin
@testset "First" begin
@test false
end;
@testset "Second" begin
# is run, ok
@test true
end;
end;
Run Code Online (Sandbox Code Playgroud)
将运行所有测试:
Run Code Online (Sandbox Code Playgroud)First: Test Failed Expression: false Stacktrace: [1] macro expansion at /home/picaud/Temp/runtests.jl:5 [inlined] [2] macro expansion at ./test.jl:860 [inlined] [3] macro expansion at /home/picaud/Temp/runtests.jl:4 [inlined] [4] macro expansion at ./test.jl:860 [inlined] [5] anonymous at ./<missing>:? Test Summary: | Pass Fail Total All tests | 1 1 2 First | 1 1 Second | 1 1 ERROR: LoadError: Some tests did not pass: 1 passed, 1 failed, 0 errored, 0 broken.
归档时间: |
|
查看次数: |
1512 次 |
最近记录: |