代码测试

编写测试文件

模块目录中:

测试文件:以 xxx_test.v结尾

测试函数:以test_xxx()开头

assert 断言

assert后面的表达式结果不为true,即为测试不通过

举例:vlib/builtin/string_test.v

  1. fn test_add() {
  2. mut a := 'a'
  3. a += 'b'
  4. assert a==('ab')
  5. a = 'a'
  6. for i := 1; i < 1000; i++ {
  7. a += 'b'
  8. }
  9. assert a.len == 1000
  10. assert a.ends_with('bbbbb')
  11. a += '123'
  12. assert a.ends_with('3')
  13. }
  14. fn test_ends_with() {
  15. a := 'browser.v'
  16. assert a.ends_with('.v')
  17. }
  18. fn test_between() {
  19. s := 'hello [man] how you doing'
  20. assert s.find_between('[', ']') == 'man'
  21. }

执行测试

执行单个测试文件

  1. v test xxx_test.v

执行模块测试文件

  1. v test xxx(模块名/目录名)

会逐个执行模块,包括子模块中的所有测试文件,所有以test_开头的测试函数

执行测试时,可增加-stats选项,显示更为详细的测试结果

  1. v -stats test xxx.v

忽略testdata目录

如果希望有一些测试文件要忽略执行,可以创建名为testdata的目录,测试框架会忽略这个目录.

实际开发场景中,这个目录还是挺实用的,可以把临时不用的测试文件挪到该目录中.