2017-12-16 10 views
-3

私はいくつかのテストを行っています。Goでテストカバレッジを向上させるには?

package model_dao 
import "io/ioutil" 
const fileExtension = ".txt" 
type Page struct { 
    Title string 
    Body []byte 
} 
func (p Page) SaveAsFile() (e error) { 
    p.Title = p.Title + fileExtension 
    return ioutil.WriteFile(p.Title, p.Body, 0600) 
} 
func LoadFromFile(title string) (*Page, error) { 
    fileName := title + fileExtension 
    body, err := ioutil.ReadFile(fileName) 
    if err != nil { 
     return nil, err 
    } 
    return &Page{title, body}, nil 
} 

とテストファイルdao_test.go:ここ

package model_dao_test 
import (
    "shopserver/model/dao" 
    "testing" 
) 
func TestDAOFileWorks(t *testing.T) { 
    TITLE := "test" 
    BODY := []byte("Hello, World!!") 
    p := &model_dao.Page{TITLE, BODY} 
    p.SaveAsFile() 
    p, _ = model_dao.LoadFromFile(TITLE) 
    result := p.Body 
    if string(BODY) != string(result) { 
     t.Error("Body", BODY, "saved.\n", "Load:", result) 
    } 
} 

は私がページからすべての2つのメソッドをテストしますが、テストの後、私はメッセージを参照してください。私は、ファイルdao.goを持って

enter image description here

なぜ85.7%しか得られないのですか?彼はこの数字を取得し、100%を得る方法は?

+1

エラーパスをテストすることは決してないからです。 [カバーの仕組みを読む](https://blog.golang.org/cover)が必要な場合があります。 – Marc

+2

"100%を得る方法?"しないでください。もしあなたがそうしなければならないならば、うそをつく。 :-) – Volker

+0

ここで、 "plz"、 "dunno"、 "bout"などは、通常、声調低下のための雷導体です。それはポストに入った努力の(かなりの)信頼性の指標です。代わりに実際の言葉を使ってください。 – halfer

答えて

2

見る「The Go Blog - The cover story」あなたは明確に行があるか、あなたのテストでカバーされていないでしょう、あなたのソースファイル、HTMLの表現を表示していました

go test -coverprofile=coverage.out 
go tool cover -html=coverage.out 

https://blog.golang.org/cover/set.png

その他のGoテストフレームワークは、同様にあなたに同じ可視化を示すだろう。例えば、GoConvey

+0

ありがとう、たくさんの男 - 「html」の旗でツールバーに行く – R1K0

関連する問題