当前位置: 首页 > news >正文

做网站要用编程吗软文代发

做网站要用编程吗,软文代发,中国建设之乡是哪里,如何编写网站开发文档Go测试中的.golden 文件是干什么用的?请举例说明 在Go语言中,.golden文件通常用于测试中的黄金文件(golden files)。黄金文件是在测试期间记录预期输出结果的文件。测试用例运行时,黄金文件用于比较实际输出与预期输出…

Go测试中的.golden 文件是干什么用的?请举例说明


在Go语言中,.golden文件通常用于测试中的黄金文件(golden files)。黄金文件是在测试期间记录预期输出结果的文件。测试用例运行时,黄金文件用于比较实际输出与预期输出是否一致。

通常,".golden" 文件的命名规则是将测试文件的名称与 ".golden" 后缀相结合,例如,如果测试文件为 "foo_test.go",则相应的 ".golden" 文件可能被命名为 "foo_test.golden"。

在测试期间,如果测试输出与 ".golden" 文件的内容匹配,则测试被认为是通过的。否则,测试将失败并显示差异信息,以帮助开发人员确定测试失败的原因。

需要注意的是,".golden" 文件不应该包含敏感信息,因为这些文件通常被包含在源代码仓库中,并且可能会被共享或分发给其他人。

".golden" 文件的命名并没有一个官方规定的标准,但是根据一些 Go 语言社区的约定,".golden" 文件通常被命名为 ".golden" 是因为这个后缀在文件名中很不常见,因此可以很容易地与其他文件进行区分。

此外,一些人认为 ".golden" 这个名称的来源可能与软件测试中的“黄金数据”(Golden Data)有关。在软件测试中,“黄金数据”指的是已知正确的数据,用于验证软件是否按照预期运行。因此,将测试期望输出与已知正确的数据进行比较,与软件测试中使用的“黄金数据”进行比较是相似的。这种类比可能也是 ".golden" 文件名称的一个来源。

举个例子,假设你正在编写一个函数来格式化一个字符串,并且你想要编写相应的测试用例。你可以创建一个黄金文件来保存预期的输出结果。在测试运行时,测试代码将生成实际的输出结果并将其与黄金文件中的预期结果进行比较。如果实际输出与预期输出匹配,测试将被标记为通过。如果不匹配,测试将被标记为失败,以便你可以检查代码的更改是否是有意的。

以下是一个示例:

假设你有一个名为formatter.go的文件,其中包含一个FormatString函数用于格式化字符串。你还有一个测试文件formatter_test.go,其中包含一个测试用例来测试FormatString函数。

在测试文件中,你可以创建一个黄金文件expected_output.golden,其中包含你期望的输出结果。然后,你的测试用例可以读取这个黄金文件,调用FormatString函数,生成实际的输出,并将其与黄金文件中的预期结果进行比较。

// formatter.go
package main

import "fmt"

func FormatString(s string) string {
    return fmt.Sprintf("Formatted: %s", s)
}

// formatter_test.go
package main

import (
    "io/ioutil"
    "testing"
)

func TestFormatString(t *testing.T) {
    input := "Hello, World!"
    expectedOutput, err := ioutil.ReadFile("expected_output.golden")
    if err != nil {
        t.Fatalf("Failed to read golden file: %v", err)
    }

    actualOutput := FormatString(input)

    if string(actualOutput) != string(expectedOutput) {
        t.Errorf("Unexpected output:\nExpected: %s\nActual: %s", expectedOutput, actualOutput)
    }
}

在这个例子中,测试代码读取expected_output.golden文件,它的内容可以是Formatted: Hello, World!。然后,测试用例调用FormatString函数并将其输出与黄金文件中的预期结果进行比较。如果两者不匹配,测试将失败并输出相应的错误消息。

使用黄金文件可以有效地验证代码的输出是否与预期一致,并提供了一种可持续的方式来更新测试结果。如果你对FormatString函数进行了更改,你只需验证黄金文件是否需要相应地更新,而无需手动更新所有测试用例的预期输出。


试一下


# command-line-arguments [command-line-arguments.test]
./formatter_test.go:15:18: undefined: FormatString

需要对 运行/调试设置做如下修改

alt

同时需要先执行 go mod init goldengo mod tidy,否则上图会提示 错误: 找不到软件包 golden


alt

新建 expected_output.golden,如果什么内容也不写入,执行单测:

alt

即 需要将预期的内容写到expected_output.golden中,最后会做一个比较

alt

和断言有何区别?


".golden" 文件和断言是测试中两个不同的概念,它们有一些相似之处,但也有一些区别。

断言是在测试代码中使用的一种机制,用于检查代码的行为是否符合预期。测试代码中通常会使用断言来检查一些条件是否为真,如果条件不满足,则测试将失败。例如,在 Go 语言中,可以使用 assert 包中的 Equal 函数来检查两个值是否相等。

与断言不同,".golden" 文件通常用于测试输出或结果是否与预期的输出或结果匹配。测试代码会生成一些输出或结果,然后与预期的输出或结果进行比较,如果匹配,则测试通过,否则将测试失败。".golden" 文件是预期输出或结果的一种形式,测试代码会将其与实际输出或结果进行比较,以确定测试是否通过。

因此,断言和".golden" 文件是测试中两种不同的机制,它们用于检查不同的测试条件。断言通常用于检查代码的行为是否符合预期,而 ".golden" 文件通常用于测试输出或结果是否与预期的输出或结果匹配。


(其实和直接在断言里写预期的字符串效果类似,但写文件,更适用于内容较多的case吧; 或者Go官方没有提供断言,一般的项目都使用第三方的 github.com/stretchr/testify/assert)


“黄金文件”这个概念,在其他编程语言中有吗?


虽然 "黄金文件" 这个特定术语在其他编程语言中可能不常见,但类似的概念在其他语言和测试框架中也存在。这些概念可能被称为 "参考文件"、"预期输出文件"、"基准文件" 或 "固定输出文件",具体取决于使用的语言和框架。

下面是一些示例:

  1. Python Unittest:在Python的unittest框架中,可以使用 assertMultiLineEqual() 方法来比较实际输出和参考文件中的内容。参考文件可以是文本文件或其他格式的文件。

  2. Java JUnit:在Java的JUnit测试框架中,你可以将预期输出作为字符串或文件提供给断言方法,然后将实际输出与其进行比较。这类似于使用黄金文件进行比较。

  3. C++ Catch2:Catch2是一个流行的C++测试框架。你可以使用 REQUIRE_THAT() 或其他类似的宏来比较实际输出与预期输出。在这种情况下,预期输出可以是一个字符串或文件。

尽管不同的编程语言和测试框架可能使用不同的术语,但它们都提供了一种机制来验证实际输出与预期输出之间的一致性。这种机制有助于确保代码的行为符合预期,并提供一种可持续的方式来更新测试结果。



本文由 mdnice 多平台发布

http://www.mnyf.cn/news/34085.html

相关文章:

  • 个人博客搭建wordpressseo搜索引擎优化师
  • 怎么做网站背景开户推广竞价开户
  • 企业网站的建设流程包含哪些环节?怎么在百度上免费做广告
  • 盘锦做网站选哪家好百度推广怎么优化排名
  • 成都高新区网站建设青岛网站建设制作
  • 私人网站制作2023半夜免费b站推广
  • 建设厅业绩可查询网站地址河南网站建设哪里好
  • 网页设计费用一般收多少合适人员优化方案怎么写
  • 合肥最好的网站建设公司网络营销方案ppt
  • 为外国企业做中文网站建设淮南网站seo
  • 自己如何建一个网站天气预报最新天气预报
  • 遵义做网站建设哪家公司好百度推广客户端mac版
  • 电子商务的网站建设分析竞价账户托管
  • 网站程序开发语言企业微信营销管理软件
  • 公司网站建设费用网店怎么开
  • wordpress 付费文章seosem是什么职位
  • 虚拟机可以做多个网站长沙优化科技有限公司
  • 鞍山网站制作报价头条广告入口
  • 做网站需要哪些栏目百度云资源搜索入口
  • 网站改标题关键词描述百度seo是什么
  • 免费素材网站无水印北京seo学校
  • 潍坊知名网站建设怎么收费关键词挖掘工具站
  • 单纯做网站的公司怎样创建网页
  • 小说网站编辑怎么做什么是sem
  • 网站建设 提成多少2345浏览器网址
  • 淡水做网站什么是互联网推广
  • 泰安做网站的公司seo培训机构哪家好
  • 毕业网站设计企业网页设计公司
  • 长沙企业网站开发微联讯点服务网站推广方案
  • 怎么看网站是什么时候做的百度问一问付费咨询