How to detect code-coverage of separated folders in GO?

家住魔仙堡 提交于 2019-12-23 07:48:11

问题


My project-structure
stuff/stuff.go -> package: stuff
test/stuff/stuff_test.go -> package: test
Although stuff_test executes code from stuff.go it shows
coverage: 0.0% of statements

I used go test -cover
If I move my *_test.go to the stuff-folder of the program it is working fine.
Or perhaps my approach of the project-structure is not well designed/go-conform?


回答1:


Cross-package test coverage is not directly supported, but several people have built wrappers to merge individual coverage profiles.

See Issue #6909 for the long history on this. And see gotestcover for an example tool to do the merging. There's also gocovmerge. I built my own version, so I haven't tried any of these, but I'm sure they all work like mine, and mine works fine.

My sense is that this is just an issue that no one has written a really compelling changelist for, and hasn't been that important to the core maintainers, so it hasn't been addressed. It does raise little corner cases that might break existing tests, so the quick hacks that work for most of us haven't been accepted as-is. But I haven't seen any discussion suggesting the core maintainers actively object to this feature.




回答2:


Conventional Go program structure keeps the tests with the package. Like this:

project
|-stuff
|--stuff.go
|--stuff_test.go

At the top of your testing files you still declare package stuff, and it is required that your test methods take the form TestMethodX if you want go test to automatically run them.

See Go docs for details: https://golang.org/pkg/testing/



来源:https://stackoverflow.com/questions/34535704/how-to-detect-code-coverage-of-separated-folders-in-go

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!