luaunit的使用

github的地址:

https://github.com/bluebird75/luaunit

使用说明文档:

http://luaunit.readthedocs.org/en/latest/

使用方法:

测试命令:lua.exe <测试用例文件:testcase.lua> -v(显示每一项测试结果)

UT目标文件:testlib.lua

 1 function add(v1,v2)
 2     -- add positive numbers
 3     -- return 0 if any of the numbers are 0
 4     -- error if any of the two numbers are negative
 5     if v1 < 0 or v2 < 0 then
 6         error('Can only add positive or null numbers, received '..v1..' and '..v2)
 7     end
 8     if v1 == 0 or v2 == 0 then
 9         return 0
10     end
11     return v1+v2
12 end

测试用例文件(UT执行文件):testcase.lua

 1 EXPORT_ASSERT_TO_GLOBALS = true
 2 package.path=[[D:3SGTestluaunit-master?.lua;E:learnSkilllualua_test?.lua;]]  ..  package.path
 3 luaunit = require('luaunit')
 4 --引入测试框架luaunit
 5 
 6 --[[
 7 UT
 8 --]]
 9 unit = require('testlib')
10 --包含所要测试的函数库(测试目标)
11 
12 --以下按照table分类测试用例(分组TestAdd与TestDiv)
13 TestAdd = {}
14 function TestAdd:testAddPositive()
15     local args = {1,1}
16     luaunit.assertEquals(add(1,1),2)
17 end
18 
19 function TestAdd:testAddZero()
20     luaunit.assertEquals(add(1,0),0)
21     luaunit.assertEquals(add(0,5),0)
22     luaunit.assertEquals(add(0,0),0)
23 end
24 
25 function TestAdd:testAddError()
26     luaunit.assertErrorMsgContains('Can only add positive or null numbers, received 2 and -3', add, 2, -3)
27 end
28 
29 function TestAdd:testAdder()
30     f = adder(3)
31     luaunit.assertIsFunction( f )
32     luaunit.assertEquals( f(2), 5 )
33 end
34 -- end of table TestAdd
35 
36 TestDiv = {}
37     function TestDiv:testDivPositive()
38         luaunit.assertEquals(div(4,2),2)
39     end
40 
41     function TestDiv:testDivZero()
42         luaunit.assertEquals(div(4,0),0)
43         luaunit.assertEquals(div(0,5),0)
44         luaunit.assertEquals(div(0,0),0)
45     end
46 
47     function TestDiv:testDivError()
48         luaunit.assertErrorMsgContains('Can only divide positive or null numbers, received 2 and -3', div, 2, -3)
49     end
50 -- end of table TestDiv
51 
52 --以下为用于每个测试用例执行前后的资源初始化setUp和释放tearDown
53 TestLogger = {}
54     function TestLogger:setUp()
55         -- define the fname to use for logging
56         self.fname = 'mytmplog.log'
57         -- make sure the file does not already exists
58         os.remove(self.fname)
59     end
60 
61     function TestLogger:tearDown()
62         -- cleanup our log file after all tests
63         os.remove(self.fname)
64     end
65 -- end of table TestLogger
66 --[[
67 UT
68 --]]
69 
70 
71 os.exit( luaunit.LuaUnit.run() )

 断言列表

Equality assertions

  • assertEquals(actual, expected)
  • assertNotEquals(actual, expected)
  • assertAlmostEquals(actual, expected, margin)
  • assertNotAlmostEquals(actual, expected, margin)

Value assertions

  • assertTrue(value)
  • assertFalse(value)
  • assertNil(value)
  • assertNotNil(value)
  • assertIs(actual, expected)
  • assertNotIs(actual, expected)

String assertions

  • assertStrContains(str, sub[, useRe])
  • assertStrIContains(str, sub)
  • assertNotStrContains(str, sub, useRe)
  • assertNotStrIContains(str, sub)
  • assertStrMatches(str, pattern[, start[, final]])

Error assertions

  • assertError(func, ...)
  • assertErrorMsgEquals(expectedMsg, func, ...)
  • assertErrorMsgContains(partialMsg, func, ...)
  • assertErrorMsgMatches(expectedPattern, func, ...)

Type assertions

  • assertIsNumber(value)
  • assertIsString(value)
  • assertIsTable(value)
  • assertIsBoolean(value)
  • assertIsNil(value)
  • assertIsFunction(value)
  • assertIsUserdata(value)
  • assertIsThread(value)

Table assertions

  • assertItemsEquals(actual, expected)
原文地址:https://www.cnblogs.com/habibah-chang/p/4892477.html