Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unit testing 如何在具有特定结构的golang应用程序中运行测试并获得覆盖率/_Unit Testing_Go - Fatal编程技术网

Unit testing 如何在具有特定结构的golang应用程序中运行测试并获得覆盖率/

Unit testing 如何在具有特定结构的golang应用程序中运行测试并获得覆盖率/,unit-testing,go,Unit Testing,Go,假设我的golang项目有如下目录结构: ├── go.mod ├── main.go ├── pack │   └── runner.go └── test └── pack └── runner_test.go 如何运行测试并获得覆盖率? 简单地运行go test-cover不适用于此目录结构。我得到[没有测试文件]。它仅在runner_test.go和runner.go位于同一目录下时才起作用。建议代码及其测试位于同一目录下,因为它们通常位于同一个包中 此外,您

假设我的golang项目有如下目录结构:


├── go.mod
├── main.go
├── pack
│   └── runner.go
└── test
    └── pack
        └── runner_test.go
如何运行测试并获得覆盖率?
简单地运行go test-cover不适用于此目录结构。我得到[没有测试文件]。它仅在runner_test.go和runner.go位于同一目录下时才起作用。

建议代码及其测试位于同一目录下,因为它们通常位于同一个包中

此外,您可以使用go test从其根目录运行模块中的所有测试。/…-这将运行模块中所有包的测试

我会将您的代码结构稍微修改为:

├── go.mod
├── main.go
├── pack
    └── runner.go
    └── runner_test.go
假设runner.go中的代码在包包包中,请注意,在go中,包名是包含目录的名称


请参阅官方的“如何编写Go代码”和Go教程。

注意,您的结构绝对不惯用,基本上被任何gopher认为是不好的做法:Test.\u Test.Go文件应该与代码位于同一文件夹中。Go不是Java。