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