当前位置: 首页 > 面试题库 >

将共享的测试代码放在Go包中的哪里?

潘泰
2023-03-14
问题内容

我有一个包含多个文件的Go包。从Go标准开始,我正在为包中的每个源文件创建一个关联的测试文件。

就我而言,不同的测试使用相同的测试帮助功能。我不希望这些功能出现在软件包源文件中,因为它仅用于测试目的。我也想避免在每个测试文件中复制此代码。

我应该把这些代码放在所有测试源文件之间共享而不是包的一部分中吗?


问题答案:

您只需将其放在任何测试文件中就可以了。使用相同package子句的测试文件属于同一测试包,并且可以引用彼此的导出 _和_未导出标识符,而无需任何import语句。

另请注意,您无需_test.go为每个文件创建单独的.go文件;并且您可以拥有一个xx_test.go文件,而xx.go软件包中没有“匹配”文件。

例如,如果您正在编写package a,则具有以下文件:

a/
    a.go
    b.go
    a_test.go
    b_test.go

对于黑盒测试,您可以package a_testa_test.go和中使用package子句b_test.go。有一个func util()in文件a_test.go,您也可以在其中使用它b_test.go

如果要编写白盒测试,则可以package a在测试文件中使用它,并且可以再次引用a_test.go从中声明的标识符b_test.go(反之亦然),而无需任何导入。

请注意,但是,如果该包的条款a_test.gob_test.go不匹配(例如,a_test.go用途package ab_test.go使用packagea_test),那么他们将属于不同的测试包,那么你就不能使用标识符彼此声明。



 类似资料:
  • 问题内容: 是否可以使用Go创建共享库(.so)? 更新 :为此创建了一个“ 问题 ”。 问题答案: 现在可以使用标志 您需要做的是首先运行以下命令: (以上代码使所有通用软件包都可共享!)然后 最后,在编译代码时,您需要运行: 上面这些就是什么,而不是静态链接所有内容而仅动态链接它们,您最终将获得更小的编译文件。为了让您了解我的带有静态链接的“ hello.go”文件为2.3MB,而使用动态链接

  • 问题内容: 我将所有活动都转换为片段,以便可以在ViewPager中使用它们。 我已经搜索过了,但是找不到满意的答案,所以这就是为什么我在这里问这个问题。 在我的活动中,我已经在该方法中编写了一些代码。例如,我调用some 以便将一些xml按钮链接到我的Activity。我还使方法中的所有视图在,设置,用文本填充和删除Notification时不可见。 我的问题是:我应将此代码放在片段的什么位置?

  • 我有一个在kotlin的‘基地’项目配置与gradle DSL。在基我有模块'app'和模块'library'。模块应用程序使用模块库。我想从模块应用程序的测试(准确地说是库的testUtils包)访问模块库的测试。 我还检查了代码所在的问题: 我需要在库的源代码中添加,这样在应用程序的测试中,我就可以使用库的测试包,而在应用程序的源代码中,我就不能使用库的测试了。 谢谢你。

  • 问题内容: 关于组织单元测试,我有两个问题。 我是否必须将测试放在与测试类相同的程序包中,或者可以在不同程序包中组织测试? 例如,如果我具有 有效性 和 其他 测试,即使它们属于同一班级,将它们分成不同的包是否正确? 模拟和存根类呢?我应该将它们与仅包含测试的软件包分开,还是放在一起? 问题答案: 我们执行JUnit测试用例的方法是将它们放在相同的包中,但放在不同的根目录中。由于我们使用Maven

  • 类似问题:在Android Studio中的Android工具测试和单元测试之间共享代码 我的设置如下: 包含单元测试的< li> 文件夹。这些可以是Java或Kotlin类 包含仪器测试的< li> 。这些也可以是Java或Kotlin类 < li> 是一个文件夹,其中包含一组在单元测试和测量测试之间共享的实用程序。 这种共享在gradle中定义为: 这允许< code>src/test或< c

  • 我在这里使用了这段Java代码,当我试图用https下载一个带有谷歌磁盘共享链接的文件时,我得到了一个错误: 我必须把它放在代码的什么地方,如果我以后在Windows PC上运行它怎么办?