这是代码
a.go
package main
import "fmt"
func Haha() {
fmt.Println("in Haha")
}
func main() {
}
a_test.go
package main_test
import "testing"
func TestA(t *testing.T) {
Haha()
}
go build
有效。但是当我跑~/gopath/src/zjk/misc$ go test -v
时。这是我得到的
# zjk/misc_test
./a_test.go:6: undefined: Haha
FAIL zjk/misc [build failed]
答案 0 :(得分:3)
因为你有不同的包
应该是:
a.go
package main
import "fmt"
func Haha() {
fmt.Println("in Haha")
}
func main() {
}
a_test.go
package main
import "testing"
func TestA(t *testing.T) {
Haha()
}
输出:
# zjk/misc_test
in Haha
PASS
ok github.com/qwertmax/so 0.009s
答案 1 :(得分:2)
您的测试位于名为main
的程序包中,该函数位于名为main
的程序包中。您没有导入main
,因此无法解决此问题。
如果您的测试不在包// Open an InputStream to read from the file
File file = new File("hl7_messages.txt");
InputStream is = new FileInputStream(file);
// It's generally a good idea to buffer file IO
is = new BufferedInputStream(is);
// The following class is a HAPI utility that will iterate over
// the messages which appear over an InputStream
Hl7InputStreamMessageIterator iter = new Hl7InputStreamMessageIterator(is);
while (iter.hasNext()) {
Message next = iter.next();
// Do something with the message
}
中,请将该功能移至第三个包。
答案 2 :(得分:1)
您需要import "main"
个main_test
包中的main.Haha()
称之为main
。
为了详细说明为什么人们可能会在不同的软件包下进行测试,我应该说有两类测试:
一个例外是包main_test
,它不能在其他包中使用,所以我们只是在包本身内编写所有测试(如@kostya所评论)。