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

是否可以同时进行测试运行单元测试?

赵光赫
2023-03-14
问题内容

如果go test是跑它运行在您的文件结尾_test.go通过运行启动格式的功能TestXxx和使用(* T
testing.T)模块。我想知道_test.go文件中的每个功能是同时运行还是确定地分别运行每个功能?是否为每个人创建一个执行例程?如果确实为每个例程创建了一个go例程,是否可以某种方式监视go例程?是否有可能做类似的事情golibrary.GoRoutines()并为每个实例获取一个实例并对其进行监控,诸如此类?

注意:这个问题假设您使用go(测试)随附的测试框架。


问题答案:

是的
,测试作为goroutines执行,因此可以
同时 执行。

但是, 默认情况下 ,@ jacobsa指出,测试 不会并行运行
。要启用并行执行,您必须调用t.Parallel()测试用例并进行GOMAXPROCS适当设置或提供-parallel N

并行运行测试时,最简单的解决方案是为端口号提供一个全局切片,并为该切片中的测试和端口之间的关联提供一个全局的原子增量索引。这样,您可以控制端口号,并且每个测试都有一个端口。例:

import "sync/atomic"

var ports [...]uint64 = {10, 5, 55}
var portIndex uint32

func nextPort() uint32 {
    return atomic.AddUint32(&portIndex, 1)
}


 类似资料:
  • 我试图弄清楚是否可以在Express.js应用程序的上下文中运行TestCafe测试。我的想法是创建一个表单,接受输入(如UPC代码),然后单击表单上的submit,它将导致TestCafe测试以无头模式(在某处)生成,并将UPC加载到此页面https://www.ebay.com/sh/research. 从那里,TestCafe将从页面获得结果并将它们粘贴到我的数据库中。 我把测试放在一个名为

  • 假设我们有这样一种方法: 在单元测试中,我们希望断言被调用过一次,而且只有一次;因此,我们可以在测试中使用另一个模拟结构来模拟它,这将为我们提供检查它是否已被调用的功能: 在单元测试中: 现在,问题是,由于是用关键字调用的,我们不能确定当我们在测试中到达断言时,它是否被调用过。 向

  • 单元测试,对独立的代码功能片段,由编写代码的团队进行测试,也是一种编码,而非与之不同的一些事情。设计代码的一部分就是设计它该如何被测试。你应该写一个测试计划,即使它只是一句话。有时候测试很简单:“这个按钮看起来好吗?”,有时候它很复杂:“这个匹配算法可以精确地返回正确的匹配结果?”。 无论任何可能的时候,使用断言检查以及测试驱动。这不仅能尽早发现 bug,而且在之后也很有用,让你在其他方面担心的谜

  • 几周前,我正在进行单元测试,它们按照预期进行构建和运行。 我休假了一周,今天早上启动了我的机器,没有对单元测试项目进行任何代码更改,测试就不再运行了。 当我说“测试不再运行”时,我并不是说它们失败了;他们实际上不会逃跑。 我试过运行或调试一个特定的测试,我试过运行或调试所有的测试,我试过从每个测试方法名称旁边的Resharper图标,我试过从test菜单项,我试过从“Unit test Sessi

  • 在使用命令时,是否需要maven-surefire插件来运行单元测试? 我阅读了文档,知道它说: Surefire插件在构建生命周期的测试阶段用于执行应用程序的单元测试。它以两种不同的文件格式生成报告: 纯文本文件(. txt)XML文件(. xml)缺省情况下,这些文件是在${Basedir}/Target/surefire-报告中生成的。 然而,我在没有使用surefire插件的情况下运行了这

  • 然而,该项目有许多类似的“测试”: 这个特殊的类创建了一个示例数据库映像,供开发人员使用。诚然,我们可以创建直接的SQL脚本,但Java进程非常有用,因为其中的代码也可以从外部源(例如Liferay)查询数据 我们为此使用单元测试的原因是因为开发人员可以轻松地在IntelliJ中运行它来加载新的数据库映像。然而,这并不是真正的“测试”,而是使用测试运行器作为运行Java进程的快速方法。 我正在建立