英文:
Unit test for function which returns function
问题
如何在VS Code中为函数getAreaFunc()编写单元测试?代码覆盖率不包括返回的函数。有人可以提供一个示例吗?
package main
import (
"fmt"
"testing"
)
func TestGetAreaFunc(t *testing.T) {
areaF := getAreaFunc()
res := areaF(2, 4)
expected := 8
if res != expected {
t.Errorf("Expected %d, but got %d", expected, res)
}
}
在上面的示例中,我们使用了Go语言的testing包来编写单元测试。我们创建了一个名为TestGetAreaFunc的测试函数,它会调用getAreaFunc()函数并检查返回的结果是否符合预期。我们预期的结果是8,因为2乘以4等于8。如果结果不符合预期,我们使用t.Errorf()函数输出错误信息。
你可以将上述代码保存为一个单独的.go文件,并在VS Code中运行测试。你可以使用命令go test
来运行当前目录下的所有测试文件,或者使用go test <文件名>
来运行指定的测试文件。
英文:
How to write unit test for the function getAreaFunc() in vs code. Code coverage does not cover the returned function. Can anyone provide a example ?
package main
import "fmt"
func main() {
areaF := getAreaFunc()
res := areaF(2, 4)
fmt.Println(res)
}
func getAreaFunc() func(int, int) int {
return func(x, y int) int {
return x * y
}
}
答案1
得分: 1
代码覆盖率不包括返回的函数。
我不确定你是如何实现单元测试的,但是getAreaFunc
返回的函数肯定可以通过单元测试进行覆盖。
例如:
// main.go
package main
func getAreaFunc() func(int, int) int {
return func(x, y int) int {
return x * y
}
}
// main_test.go
package main
import (
"fmt"
"testing"
)
func TestGetAreaFunc(t *testing.T) {
areaF := getAreaFunc()
res := areaF(2, 4)
fmt.Println(res)
}
一旦你执行命令go test -cover .
,你将在结果中得到100%
的覆盖率。
英文:
> Code coverage does not cover the returned function
I'm not sure how you implement the unit test, but the returned function of getAreaFunc
definitely can be covered by a unit test.
For example:
// main.go
package main
func getAreaFunc() func(int, int) int {
return func(x, y int) int {
return x * y
}
}
// main_test.go
package main
import (
"fmt"
"testing"
)
func TestGetAreaFunc(t *testing.T) {
areaF := getAreaFunc()
res := areaF(2, 4)
fmt.Println(res)
}
Once you execute command go test -cover .
you will get 100%
coverage in result
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论