我正在测试一种方法,一切似乎都很好。但是,当我在 GoLand 中运行测试时,我可以在输出中看到测试“通过”,但测试运行器显示“没有运行测试”。
这是示例方法calculator.go
package calculator
import (
"fmt"
)
type Calculator struct {}
func New() Calculator {
return Calculator{}
}
func (s *Calculator) AddTwoNumbers(num_one, num_two int) int {
fmt.Printf("adding")
return num_one + num_two
}
Run Code Online (Sandbox Code Playgroud)
这是测试calculator_test.go:
package calculator
import (
"fmt"
"testing"
)
func Test_Calculator_AddTwoNumbers(t *testing.T) {
// Arrange
calculator := New()
// Act
total := calculator.AddTwoNumbers(1,2)
// Assert
if total != 3 {
msg := fmt.Sprintf("total should have been %d but instead was %d", 3, total) …Run Code Online (Sandbox Code Playgroud) 我正在使用gqlgen,并且我想向查询解析器添加一个新方法。添加的方法看起来像这样:
type Query {
...
Foo(bar: Int!): Foo
...
}
Run Code Online (Sandbox Code Playgroud)
的类型Foo已在文件中声明,并且正在正确映射到文件中的模型.go(我知道这一点是因为以前使用该类型的方法)。当我尝试从上面的添加生成代码时,一个新的代码FooResolver被添加到ResolverRoot.
有什么想法为什么会出现这种情况吗?
从项目目录的根目录运行 gogenerate 时,我在使用 gogenerate 生成 grpc 服务器时遇到一些问题。
当我运行时go generate -v它只返回main.go. 但是,这些指令是在子包之一中定义的。如果我go generate在子包中运行,它会按预期工作。我希望导入能够确保go generate找到子包并运行指令。
该项目具有以下结构:
cmd/
root.go
run.go
pkg/
subpkg/
protobuf/
proto1.proto
subpkg.go
main.go
Run Code Online (Sandbox Code Playgroud)
subpkg.go 的内容
//go:generate protoc -I ./protobuf --go_out=plugins=grpc:./protobuf ./protobuf/proto1.proto
package subpkg
Run Code Online (Sandbox Code Playgroud)
main.go 的内容:
cmd/
root.go
run.go
pkg/
subpkg/
protobuf/
proto1.proto
subpkg.go
main.go
Run Code Online (Sandbox Code Playgroud)
在 run.go 包中,我导入了包 subpkg。
如何确保 gogenerate 可以从项目的根目录运行并执行所有子包中的所有指令。