拓展閱讀
Auto generate mock data for java test.(便于 Java 測試自動生成對象信息)
Junit performance rely on junit5 and jdk8+.(java 性能測試框架。性能測試。壓測。測試報告生成。)
power-assert-js
Provides descriptive assertion messages through standard assert interface.
No API is the best API.
設計理念
NO API IS THE BEST API — THE ELEGANT POWER OF POWER ASSERT
什么是 power-assert?
power-assert 是 JavaScript 中 "Power Assert" 概念的一種實現(xiàn)。
通過標準的 assert 接口提供描述性斷言消息。
沒有比它更好的 API。使用 power-assert,你不需要學習很多斷言庫的 API(在大多數(shù)情況下,你只需要記住 assert(any_expression) 函數(shù))。
停止記憶大量的斷言 API。只需創(chuàng)建返回真值或非真值的表達式,power-assert 將其顯示在屏幕上,作為你的失敗消息的一部分,而無需輸入任何消息。
power-assert 的核心價值在于絕對的簡單性和穩(wěn)定性。特別是,power-assert 堅持測試的最簡單形式,即 assert(any_expression)。
查看幻燈片:"power-assert,機制和哲學" —— 在 NodeFest 2014 的演講。
【新】現(xiàn)在你不再需要 require('power-assert')。繼續(xù)使用 require('assert'),power-assert 會在幕后進行增強。查看幻燈片:"從庫到工具 - power-assert 作為通用斷言增強工具"
為了獲得 power-assert 輸出,你需要轉換你的測試代碼以生成 power-assert 輸出。
power-assert - power = assert。在沒有代碼轉換的情況下,power-assert 就像普通的 assert 一樣工作。
與 assert 完全兼容。因此,你可以輕松地停止使用 power-assert,回到 assert。
有在線演示站點。
同時在服務器端和瀏覽器端工作。
通過 npm 和 bower 可用。
支持源映射,因此你可以像平常一樣進行調試。
提供 Babel 插件和 Babel 預設。
提供 Browserify 轉換。
提供 webpack 加載器。
提供 grunt 任務和 gulp 插件。
提供命令行工具。
提供自定義模塊加載器及其方便的配置模塊。
提供 Karma 適配器和 Karma 預處理器。
通過 Babel 插件支持 ES6+。
支持 CoffeeScript。
支持 TypeScript。
有 TypeScript 類型定義。
有用于將現(xiàn)有代碼從 chai、should.js 和 expect.js 轉換到 assert 的代碼遷移工具。
AVA,這個具有未來感的測試運行器,現(xiàn)在內置了 power-assert。
有 Lab 轉換器,以在 Lab 上啟用 power-assert。
有模塊加載器,使 ts-node 與 power-assert 協(xié)同工作。
Wallaby.js 通過 Babel 編譯器/預處理器支持 power-assert。
歡迎提交拉取請求、問題報告和補丁。
power-assert 為你的測試提供描述性的斷言消息,就像這樣。
1) Array #indexOf() should return index when the value is present:
AssertionError: # path/to/test/mocha_node.js:10
assert(ary.indexOf(zero) === two)
| | | | |
| | | | 2
| -1 0 false
[1,2,3]
[number] two
=> 2
[number] ary.indexOf(zero)
=> -1
API
power-assert通過 espower 增強了這些 assert 函數(shù),在斷言失敗時生成描述性消息。
assert(value, [message])
assert.ok(value, [message])
assert.equal(actual, expected, [message])
assert.notEqual(actual, expected, [message])
assert.strictEqual(actual, expected, [message])
assert.notStrictEqual(actual, expected, [message])
assert.deepEqual(actual, expected, [message])
assert.notDeepEqual(actual, expected, [message])
assert.deepStrictEqual(actual, expected, [message])
assert.notDeepStrictEqual(actual, expected, [message])
power-assert 與 assert 完全兼容。因此,雖然它們沒有被增強(不生成描述性消息),但以下函數(shù)也是可用的。
assert.fail(actual, expected, message, operator)
assert.throws(block, [error], [message])
assert.doesNotThrow(block, [message])
assert.ifError(value)
從版本1.5.0開始,power-assert還支持 "strict mode"。
power-assert提供了一個用于定制的API。
assert.customize(options)
沒有 API 就是最好的 API
盡管 power-assert 與標準的 assert 接口完全兼容,在大多數(shù)情況下,你只需要記住的是 assert(any_expression) 函數(shù)。
power-assert 的核心價值在于絕對的簡單性和穩(wěn)定性。特別是,power-assert 堅持測試的最簡單形式,即 assert(any_expression)。
assert(types[index].name === bob.name)
| || | | | |
| || | | | "bob"
| || | | Person{name:"bob",age:5}
| || | false
| |11 "alice"
| Person{name:"alice",age:3}
["string",98.6,true,false,null,undefined,#Array#,#Object#,NaN,Infinity,/^not/,#Person#]
--- [string] bob.name
+++ [string] types[index].name
@@ -1,3 +1,5 @@
-bob
+alice
感想
個人以后設計 api 就可以參考這個。
使用的時候,讓用戶盡可能的不需要查閱文檔,直接使用。