2017-12-16 14 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) 
    } 
} 

내가 페이지 모든이 방법을 테스트하지만 테스트 후 나는 메시지가 표시 : 나는 파일 dao.go이

enter image description here

85.7 % 밖에되지 않는 이유는 무엇입니까? 그가이 숫자를 얻는 방법과 100 %를 얻는 방법?

+1

아마도 오류 경로를 테스트하지 않았기 때문일 수 있습니다. [커버 작동 방법에 대해 읽어보기] (https://blog.golang.org/cover)를 원할 수 있습니다. – Marc

+2

"100 % 얻는 방법?" 하지마. 그리고해야한다면 : 거짓말. :-) – Volker

+0

여기서 "plz", "dunno", "bout"(등)는 보통 downvotes의 피뢰침입니다. 이것은 게시물에 들어가는 노력의 부족에 대한 신뢰성있는 지표입니다. 대신 실제 단어를 사용하십시오. – 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

다른 이동 테스트 프레임 워크뿐만 아니라 당신에게 동일한 시각화를 보여줄 것입니다.
예를 들어 GoConvey입니다.

+0

덕분에 많은 남자 - 몰라요 'html'플래그와 함께 도구 커버를 몰라. – R1K0