如何在goroutine中测试结果而无需等待测试

哈里·范范:

当我做golang时,有时需要在goroutine中测试结果,我在用时间。睡眠测试,我想知道是否有更好的测试方法。

假设我有一个这样的示例代码

func Hello() {
    go func() {
        // do something and store the result for example in db
    }()
    // do something
}

然后,当我测试func时,我想在goroutine中测试两个结果,我正在这样做:

 func TestHello(t *testing.T) {
        Hello()
        time.Sleep(time.Second) // sleep for a while so that goroutine can finish
        // test the result of goroutine
 }

有没有更好的方法来测试?

基本上,按照实际逻辑,我不在乎goroutine中的结果,我不需要等待它完成。但在测试中,我想检查一下是否完成。

费萨尔·布哈努丁(faisal burhanudin):

如果您确实要检查goroutine的结果,则应使用类似以下的通道:

package main

import (
    "fmt"
)

func main() {
    // in test
    c := Hello()
    if <-c != "done" {
        fmt.Println("assert error")
    }

    // not want to check result
    Hello()
}

func Hello() <-chan string {
    c := make(chan string)
    go func() {
        fmt.Println("do something")
        c <- "done"
    }()
    return c
}

https://play.golang.org/p/zUpNXg61Wn

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何告诉我的测试等待goroutine中的回调?

如何在vimscript或UltiSnips中扩展当前文件名而无需“测试”

如何在应用程序中测试 RabbitMQ 消息 TTL,而无需从代码库中更改它

在单元测试中,如何在声明结果之前等待RxJava2 Observable完成

从数据结构中检索测试而无需测试存储

如何在goroutine中测试监视文件的功能

如何在一个.travis.yml中测试Python和C ++,而无需多次运行C ++?

将结果与响应数据保存在JMeter中,而无需重新运行测试

如何在 tSQLt 中查看测试结果?

如何在Codedeploy中查看测试结果

如何在异步等待中测试catch语句

如何在单元测试中解决异步等待-javascript

如何在硒测试phpunit中打开命令之前等待?

如何在tfs / mtm中的测试运行中将测试结果结果(失败/通过)添加到测试中

测试我的代码不等待的Goroutine

如何在AngularJS单元测试中模拟诺言的结果?

如何在黄瓜测试中传递整数值并验证结果

JUnit5-如何在AfterTestExecutionCallback中获取测试结果

如何在文件中获得总体瑞克测试结果

如何在@AfterMethod中从TestNG / Selenium获取测试结果状态?

如何在Eclipse的“ Junit View”中查看Maven测试结果

您如何在Nighwatch中测试“ client.execute”的结果?

如何在Coverity Connect分析结果中忽略JAVA测试?

如何在测试库反应中获得结果“ toHaveStyle”?

如何在詹金斯中显示测试结果趋势?

如何在R中访问测试结果的成员

如何在单元测试中模拟方法的结果?

如何在 R 中绘制 Chow 测试结果?

如何在 Azure Pipelines 中公开测试结果?