update tw

This commit is contained in:
chai2010
2015-12-18 10:53:03 +08:00
parent 510c741a6f
commit c66a96ee52
106 changed files with 864 additions and 864 deletions

View File

@@ -1,9 +1,9 @@
### 11.2.2. 測試一個命令
對於測試包 `go test` 是一個的有用的工具, 但是稍加努力我們也可以用它來測試可執行程序. 如果一個包的名字是 main, 那麽在構建時會生成一個可執行程序, 不過 main 包可以作一個包被測試器代碼導入.
對於測試包 `go test` 是一個的有用的工具, 但是稍加努力我們也可以用它來測試可執行程序. 如果一個包的名字是 main, 那麽在構建時會生成一個可執行程序, 不過 main 包可以作一個包被測試器代碼導入.
讓我們 2.3.2節 的 echo 程序編寫一個測試. 我們先將程序拆分兩個函數: echo 函數完成眞正的工作, main 函數用於處理命令行輸入參數和echo可能返迴的錯誤.
讓我們 2.3.2節 的 echo 程序編寫一個測試. 我們先將程序拆分兩個函數: echo 函數完成眞正的工作, main 函數用於處理命令行輸入參數和echo可能返迴的錯誤.
```Go
gopl.io/ch11/echo
@@ -42,7 +42,7 @@ func echo(newline bool, sep string, args []string) error {
}
```
在測試中嗎我們可以用各種參數和標標誌調用 echo 函數, 然後檢測它的輸齣是否正確, 我們通過增加參數來減少 echo 函數對全侷變量的依賴. 我們還增加了一個全侷名 out 的變量來替代直接使用 os.Stdout, 這樣測試代碼可以根據需要將 out 脩改為不衕的對象以便於檢査. 下就是 echo_test.go 文件中的測試代碼:
在測試中嗎我們可以用各種參數和標標誌調用 echo 函數, 然後檢測它的輸齣是否正確, 我們通過增加參數來減少 echo 函數對全侷變量的依賴. 我們還增加了一個全侷名 out 的變量來替代直接使用 os.Stdout, 這樣測試代碼可以根據需要將 out 脩改爲不同的對象以便於檢査. 下就是 echo_test.go 文件中的測試代碼:
```Go
package main
@@ -83,9 +83,9 @@ func TestEcho(t *testing.T) {
}
```
要註意的是測試代碼和產品代碼在一個包. 雖然是main包, 也有對應的 main 入口函數, 但是在測試的時候 main 包隻是 TestEcho 測試函數導入的一個普通包, 裡 main 函數並沒有被導齣是被忽略的.
要註意的是測試代碼和產品代碼在一個包. 雖然是main包, 也有對應的 main 入口函數, 但是在測試的時候 main 包隻是 TestEcho 測試函數導入的一個普通包, 裡 main 函數並沒有被導齣是被忽略的.
通過將測試放到格中, 我們很容易添加新的測試用例. 讓我通過增加下的測試用例來看看失敗的情況是怎麽樣的:
通過將測試放到格中, 我們很容易添加新的測試用例. 讓我通過增加下的測試用例來看看失敗的情況是怎麽樣的:
```Go
{true, ",", []string{"a", "b", "c"}, "a b c\n"}, // NOTE: wrong expectation!
@@ -101,8 +101,8 @@ FAIL
FAIL gopl.io/ch11/echo 0.006s
```
錯誤信息描述了嘗試的操作(使用Go類似語法), 實際的行, 和期望的行. 通過這樣的錯誤信息, 你可以在檢視代碼之前就很容易定位錯誤的原因.
錯誤信息描述了嘗試的操作(使用Go類似語法), 實際的行, 和期望的行. 通過這樣的錯誤信息, 你可以在檢視代碼之前就很容易定位錯誤的原因.
要註意的是在測試代碼中並沒有調用 log.Fatal 或 os.Exit, 因調用這類函數會導緻程序提前退齣; 調用這些函數的特權應該放在 main 函數中. 如果眞的有以外的事情導緻函數發送 panic, 測試驅動應該嘗試 recover, 然後將前測試作失敗處理. 如果是可預期的錯誤, 例如非法的用戶輸入, 找不到文件, 或配置文件不等應該通過返迴一個非空的 error 的方式處理. 倖運的是(上的意外隻是一個插), 我們的 echo 示例是比較簡單的也沒有需要返迴非空error的情況.
要註意的是在測試代碼中並沒有調用 log.Fatal 或 os.Exit, 因調用這類函數會導緻程序提前退齣; 調用這些函數的特權應該放在 main 函數中. 如果眞的有以外的事情導緻函數發送 panic, 測試驅動應該嘗試 recover, 然後將前測試作失敗處理. 如果是可預期的錯誤, 例如非法的用戶輸入, 找不到文件, 或配置文件不等應該通過返迴一個非空的 error 的方式處理. 倖運的是(上的意外隻是一個插), 我們的 echo 示例是比較簡單的也沒有需要返迴非空error的情況.