我在一个大型项目中以调试模式运行单元测试。但是,这个项目引用了太多的库,这导致我在执行单个测试时首先执行这些库的init函数。这需要很多时间,所以我希望有一种方法可以跳过init函数。我没找到什么可以尝试的。
wgmfuz8q1#
不你不能包init()函数必须在您可以使用包中的任何内容之前运行,否则无法保证它们可以正确运行,而不会出现恐慌。软件包本身必须支持这一点,例如。通过环境变量或任何其他方式;或者它们可以提供必须手动调用的非默认init函数。
init()
juzqafwq2#
你可以尝试使用Testing函数(Go 1.21+)来检测测试模式,并跳过init()中的一些代码(如果你可以更改此代码):测试报告当前代码是否正在测试中运行。这将在由“go test”创建的程序中报告true,在由“go build”创建的程序中报告false。
2条答案
按热度按时间wgmfuz8q1#
不你不能包
init()
函数必须在您可以使用包中的任何内容之前运行,否则无法保证它们可以正确运行,而不会出现恐慌。软件包本身必须支持这一点,例如。通过环境变量或任何其他方式;或者它们可以提供必须手动调用的非默认init函数。
juzqafwq2#
你可以尝试使用Testing函数(Go 1.21+)来检测测试模式,并跳过
init()
中的一些代码(如果你可以更改此代码):测试报告当前代码是否正在测试中运行。这将在由“go test”创建的程序中报告true,在由“go build”创建的程序中报告false。