2016-07-31 70 views
0

据我所知,我完全按照“去测试”所需的结构。我没有看到我可以在其他软件包中运行的测试的差异。 '去建造'工作正常。 我越来越go模板的示例测试失败,导入并未使用:“测试”

./HelloTemplate_test.go:3:进口,不使用 “测试” ./HelloTemplate_test.go:5:未定义:测试在Testing.T

什么我错过了吗?

HelloTemplate.go

package templateprint 

import "testing" 

func TestRunTempl(t *Testing.T) { 
    sweaters := Inventory{"wool", 17} 
    tmpl := "{{.Count}} items are made of {{.Material}}" 
    err := RunTempl(tmpl, sweaters) 
    if err != nil { 
     t.Error("Template failed ") 
    } 
} 

HelloTemplate_test.go

package templateprint 

import (
    "os" 
    "text/template" 
) 

type Inventory struct { 
    Material string 
    Count uint 
} 

func RunTempl(templ string, inv Inventory) error { 
    tmpl, err := template.New("test").Parse(templ) 
    if err != nil { 
     return (err) 
    } 
    err = tmpl.Execute(os.Stdout, inv) 
    if err != nil { 
     return (err) 
    } 
    return nil 
} 

回答

1

您正在使用您的测试功能一个不正确的类型:

// tesintg.T, not Testing.T 
// T is a type defined in testing module 
func TestRunTempl(t *testing.T) { 
    sweaters := Inventory{"wool", 17} 
    tmpl := "{{.Count}} items are made of {{.Material}}" 
    err := RunTempl(tmpl, sweaters) 
    if err != nil { 
     t.Error("Template failed ") 
    } 
}