Hi, yes this is behaviour as designed.
We don't track code coverage data inside the analysis/discovery step. Because the static initializers are technically housed inside the static constructor for the class, they get executed during discovery. Generally, we re-use the test process that was used to discover the tests, so the CLR won't call the static constructor again during execution.
Static constructors in general will always give inconsistent behaviour around test coverage as their lifecycles do not align with test execution.