dongyuan8024 2013-02-06 06:49
浏览 44
已采纳

去测试无法在同一包中找到功能

The directory structure is :

src src/pkg src/pkg/t1.go src/pkg/t1_test.go

t1.go

package pkg

import (
"fmt"
)

func SayHI(){
    fmt.Println("this is t1")
}

t1_test.go

package pkg

import (
    "testing"
)

func TestXYZ(t *testing.T) {
    SayHI()
}

Invoke go test from command line at dir src/pkg

go test t1_test.go

error: ./t1_test.go:8: undefined: SayHI FAIL command-line-arguments [build failed]

but the function is there

thanks for any hints

  • 写回答

3条回答 默认 最新

  • drtoclr046994545 2013-02-06 07:22
    关注

    It is working as intended.

    jnml@fsc-r630:~/src/pkg$ go help test
    usage: go test [-c] [-i] [build flags] [packages] [flags for test binary]
    
    'Go test' automates testing the packages named by the import paths.
    It prints a summary of the test results in the format:
    
        ok   archive/tar   0.011s
        FAIL archive/zip   0.022s
        ok   compress/gzip 0.033s
        ...
    
    followed by detailed output for each failed package.
    
    'Go test' recompiles each package along with any files with names matching
    the file pattern "*_test.go".  These additional files can contain test functions,
    benchmark functions, and example functions.  See 'go help testfunc' for more.
    
    By default, go test needs no arguments.  It compiles and tests the package
    with source in the current directory, including tests, and runs the tests.
    
    The package is built in a temporary directory so it does not interfere with the
    non-test installation.
    
    In addition to the build flags, the flags handled by 'go test' itself are:
    
        -c  Compile the test binary to pkg.test but do not run it.
    
        -i
            Install packages that are dependencies of the test.
            Do not run the test.
    
    The test binary also accepts flags that control execution of the test; these
    flags are also accessible by 'go test'.  See 'go help testflag' for details.
    
    For more about build flags, see 'go help build'.
    For more about specifying packages, see 'go help packages'.
    
    See also: go build, go vet.
    jnml@fsc-r630:~/src/pkg$ 
    

    IOW:

    • go test is okay.
    • go test pkg (assuming $GOPATH is ~ and the package is in ~/src/pkg) is okay.
    • go test whatever_test.go is not okay as that is not supported as documented above.

    To select which tests to run use the -run RE flag (RE is a regexp, interpreted like *RE*). For example

    $ go test -run Say # from within the package's directory
    

    or

    $ go test -run Say my/package/import/path # from anywhere
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
  • ¥30 python代码,帮调试
  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元