首页 > 后端开发 > Golang > 正文

可以从非测试文件中调用 Go 测试函数吗?

DDD
发布: 2024-10-25 15:55:02
原创
127 人浏览过

Can You Call Go Test Functions From Non-Test Files?

从非测试文件调用测试函数

在 Go 中,测试依赖于特定的约定和方法。这些约定之一是测试应该分成自己的测试文件,并且必须以“_test.go”后缀结尾。

可以从非测试文件调用测试函数吗?

简短回答:不。

与您的问题相反,测试函数不能直接从非测试 Go 文件调用。这种分离确保了测试与被测代码保持不同且独立。

Go 中的测试模式

Go 主要采用两种类型的单元测试:

  • 黑盒测试:评估公共、导出函数,模仿外部调用者如何与它们交互。
  • 白盒测试:评估私有函数,同一包中未导出的函数,提供对内部操作的更深入的了解。

示例

考虑以下带有导出的“Sum”的“示例”包函数和未导出的“add”函数:

package example

func Sum(nums ...int) int {
    sum := 0
    for _, num := range nums {
        sum = add(sum, num)
    }
    return sum
}

func add(a, b int) int {
    return a + b
}
登录后复制

黑盒测试 (example_test.go):

package example_test

import (
    "testing"

    "example"
)

func TestSum(t *testing.T) {
    tests := []struct {
        nums []int
        sum  int
    }{
        {nums: []int{1, 2, 3}, sum: 6},
        {nums: []int{2, 3, 4}, sum: 9},
    }

    for _, test := range tests {
        s := example.Sum(test.nums...)
        if s != test.sum {
            t.FailNow()
        }
    }
}
登录后复制

白盒测试(example_internal_test.go):

package example_test

import "testing"

func TestAdd(t *testing.T) {
    tests := []struct {
        a   int
        b   int
        sum int
    }{
        {a: 1, b: 2, sum: 3},
        {a: 3, b: 4, sum: 7},
    }

    for _, test := range tests {
        s := add(test.a, test.b)
        if s != test.sum {
            t.FailNow()
        }
    }
}
登录后复制

总之,从非测试文件调用测试函数违反了 Go 测试的原则。应使用单独的测试包进行单元测试,并遵守既定的工作流程和约定。

以上是可以从非测试文件中调用 Go 测试函数吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!