Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unit testing 降低代码覆盖率的模拟代码_Unit Testing_Go_Test Coverage - Fatal编程技术网

Unit testing 降低代码覆盖率的模拟代码

Unit testing 降低代码覆盖率的模拟代码,unit-testing,go,test-coverage,Unit Testing,Go,Test Coverage,我正在与Golang合作,并使用生成所有接口的模拟。此工具在同一包中的mocks.go文件中生成模拟实现。我无法重命名mocks.go至mocks_test.go,因为此模拟文件已被其他软件包使用 问题是这些mock文件由go覆盖工具计数,从而降低了包的代码覆盖率 我正在寻找一个好的解决方法,这样我的代码覆盖率就不会显示错误的数字 在这种情况下,最好的办法是将mock移动到它们自己的专用包中,该包没有测试覆盖范围。这将消除它们对实际需要覆盖率数据的代码的影响。我们就是这样解决的 将接口放入消费者

我正在与Golang合作,并使用生成所有接口的模拟。此工具在同一包中的mocks.go文件中生成模拟实现。我无法重命名mocks.go至mocks_test.go,因为此模拟文件已被其他软件包使用

问题是这些mock文件由go覆盖工具计数,从而降低了包的代码覆盖率


我正在寻找一个好的解决方法,这样我的代码覆盖率就不会显示错误的数字

在这种情况下,最好的办法是将mock移动到它们自己的专用包中,该包没有测试覆盖范围。这将消除它们对实际需要覆盖率数据的代码的影响。

我们就是这样解决的

  • 将接口放入消费者文件夹中。如果在处理程序中注入服务,则处理程序将具有服务的接口定义。这是因为GoLang哲学认为界面是消费功能而不是公开功能
  • 使用模拟生成模拟

  • 在单独的_mock文件夹中生成mock


  • 出于好奇,为什么您的模拟会在测试之外使用?我们正在关注DDD,在DDD中,域通常会公开其存储库接口,该接口稍后由存储库实现。类似于服务,由处理程序层使用。由测试代码本身使用但在该包(Golang特定)之外的模拟共享模拟应该位于单独的包中。那么只有您的其他
    *\u test.go
    文件需要依赖它们。