一个仿照c#接口写的typescript单元测试框架
https://github.com/xxxxst/tsunit
- 简洁的接口
- 运行于chrome
- 方便定位错误位置
- 支持异步测试用例
npm install @xxxxst/tsunit
- 启用 decortor
- 启用 source map
查看更多配置
https://github.com/xxxxst/example-tsunit
测试文件 - ComTest.ts
@TestClass()
export default class ComTest {
@Test()
matchTest() {
Assert.equal(1, 1);
Assert.notEqual("aa", "bb");
}
@Ignore()
@Test()
ignoreTest() {
Assert.equal(1, 2, "info");
}
@Test(1, 2)
@Test("a", "b")
noMatchTest(except, actual) {
Assert.equal(except, actual, "info");
}
@AsyncTest()
async asyncTest() {
var rst = await this.getHttp();
Assert.equal("data", rst);
}
async getHttp() {
return new Promise(resolve => setTimeout(()=>{
resolve("data");
}, 0));
}
}
测试文件 - ComTest2.ts
@TestClass({autoRun:false})
export default class ComTest2 {
constructor(arg1, arg2) {
}
}
程序入口文件
// 不需要创建测试类,导入即可自动执行
import './ComTest';
// 第二种引用方式
// 确保类被引用过
import ComTest from './ComTest';
ComTest
// 自定义执行测试程序
import ComTest2 from './ComTest2';
// ... 你的初始化代码
setTimeout(()=>{
// 运行测试
Assert.run(ComTest2, "arg1", "arg2");
}, 0);
打开控制台查看测试信息
@TestClass(option?:{autoRun?:boolean}, ...args)
- 类装饰器
- 标记测试类
autoRun
自动执行测试, 默认为true
args
测试类构造函数参数
@Test(...args)
- 方法装饰器
- 标记测试方法
args
方法参数
@AsyncTest(...args)
- 方法装饰器
- 标记异步测试方法
- 需要使用
async/await
args
方法参数
@Ignore()
- 方法装饰器
- 忽略(异步)测试方法
Assert.run(class, ...args)
- 自定义运行测试类
- 需要在 @TestClass()使用
autoRun:false
class
测试类args
测试类构造函数参数
Assert.setLang(obj)
- 设置语言,默认为英语
obj
语言数据, 详细数据请查看源代码- 内置语言:
Assert.lang_en_us
英语Assert.lang_zh_cn
简体中文
Assert.equal(expected:any, actual:any, desc: string = "")
- 测试是否相等,如果是
object
类型则遍历进行比较 expected
期望值actual
实际值desc
描述信息
其他assert
- | - |
---|---|
Assert.equal | (expected:any, actual:any, desc: string = "") |
Assert.notEqual | (expected:any, actual:any, desc: string = "") |
Assert.strongEqual | (expected:any, actual:any, desc: string = "") |
Assert.strongNotEqual | (expected:any, actual:any, desc: string = "") |
Assert.same | (expected:any, actual:any, desc: string = "") |
Assert.notSame | (expected:any, actual:any, desc: string = "") |
Assert.isTrue | (actual:any, desc: string = "") |
Assert.isFalse | (actual:any, desc: string = "") |
Assert.isEmpty | (actual:any, desc: string = "") |
Assert.isNotEmpty | (actual:any, desc: string = "") |
Assert.isNull | (actual:any, desc: string = "") |
Assert.isNotNull | (actual:any, desc: string = "") |
Assert.isUndefined | (actual:any, desc: string = "") |
Assert.isNotUndefined | (actual:any, desc: string = "") |
Assert.isBool | (actual:any, desc: string = "") |
Assert.isArray | (actual:any, desc: string = "") |
Assert.isObject | (actual:any, desc: string = "") |
Assert.isString | (actual:any, desc: string = "") |
Assert.isNumber | (actual:any, desc: string = "") |
Assert.success | (desc: string = "") |
Assert.fail | (desc: string = "") |
assert使用
方法 | 近似表达式 | 用法 | |
---|---|---|---|
equal | a==b(遍历对象) | Assert.equal(1,1) Assert.equal(true,true) Assert.equal(1,'1') Assert.equal({},{}) Assert.equal([1],[1]) |
=> 成功 => 成功 => 成功 => 成功 => 成功 |
notEqual | a!=b(遍历对象) | ||
strongEqual | typeof(a)==typeof(b) && equal(a,b) | Assert.strongEqual(1,'1') | => 失败 |
strongNotEqual | !strongEqual(a,b) | ||
same | a===b | Assert.same(1,'1') Assert.same({},{}) a=b={},Assert.same(a,b) |
=> 失败 => 失败 => 成功 |
notSame | a!==b | ||
isTrue | !!a | Assert.isTrue(0) Assert.isTrue(false) Assert.isTrue("") Assert.isTrue(null) Assert.isTrue(undefined) |
=> 失败 => 失败 => 失败 => 失败 => 失败 |
isFalse | !a | ||
isEmpty | !a | Assert.isEmpty("") | => 成功 |
isNotEmpty | !!a | ||
isNull | a===null | Assert.isNull(null) Assert.isNull(undefined) |
=> 成功 => 失败 |
isNotNull | a!==null | ||
isUndefined | a===undefined | Assert.isUndefined(undefined) Assert.isUndefined(null) |
=> 成功 => 失败 |
isNotUndefined | a!==undefined | ||
isBool | typeof(a)=="boolean" | Assert.isBool(undefined) Assert.isBool(null) Assert.isBool(0) Assert.isBool("") |
=> 失败 => 失败 => 失败 => 失败 |
isArray | Array.isArray(a) | Assert.isArray([]) Assert.isArray({}) |
=> 成功 => 失败 |
isObject | a!=null && typeof(a)=="object" && !Array.isArray(a) |
Assert.isObject({}) Assert.isObject([]) |
=> 成功 => 失败 |
isString | typeof(a)=="string" | Assert.isString("") | => 成功 |
isNumber | typeof(a)=="number" | Assert.isString(1) | => 成功 |
success | true | Assert.success() | => 成功 |
fail | false | Assert.fail() | => 失败 |
基于webpack + typescript + vue(ui测试)