Hi Sam,
Thanks for posting.
This is behaviour as designed, because without it we have no way to report data from the fixtures themselves.
It's quite common for fixture tests to report information outside their child tests. For example, trace data and code coverage data from methods like TestFixtureSetUp or ClassInitialize. This data can be very important and it does need to be reported. Since the reporting structures available to us don't let us report this data, we build a virtual test to hold it. When considering the other option (not reporting on fixture data), having an erroneous test count seems like the lesser of two evils.