我正在开展项目,我的任务是为一个软件包编写一些测试。测试需要访问不同包中的全局变量。这个全局变量可能是在不同软件包的测试中设置/访问的。因为默认情况下,测试会针对不同的包并行运行。因此,设置/访问此变量可能会创建竞争条件。什么是最好的方式来同步不同包中涉及全局变量的测试?
最简单的同步方法是创建一个跨越不同包的共享sync.Mutex。话虽如此,我试图把这个sync.Mutex放在声明全局变量的xxx.go的xxx_test.go中,不幸的是,由于范围的限制,另一个软件包无法访问这个Mutex。最终,我发现我必须将这个sync.Mutex添加到专门用于测试的实用程序包中,然后不同的程序包可以访问此Mutex以实现该全局变量的同步目的。
我是新郎朗。我只是觉得我需要创建一个实用程序包来实现测试中的同步目的很尴尬,另一方面,如果另一个开发人员在另一个包中做了一些测试,他/她可能不知道在哪里可以找到这个sync.Mutex。有没有更好的方法来实现这个同步的目的与一个优雅的解决方案。
非常感谢!
这是原因之一,为什么不推荐使用全局变量...: ) – cd1
确实,谢谢。 –