函数的单元测试,该函数返回一个函数。

huangapple go评论81阅读模式
英文:

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 &quot;fmt&quot;

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 (
	&quot;fmt&quot;
	&quot;testing&quot;
)

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

huangapple
  • 本文由 发表于 2022年4月26日 18:28:10
  • 转载请务必保留本文链接:https://go.coder-hub.com/72012377.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定