axodox / AxoCover

Nice and free .Net code coverage support for Visual Studio with OpenCover.
https://marketplace.visualstudio.com/items?itemName=axodox1.AxoCover
MIT License
250 stars 60 forks source link

.Net Core is not supported (yet) #33

Open cseymr opened 7 years ago

cseymr commented 7 years ago

Sorry, this isn't quite the right place to ask this, but it might turn out to be a documentation issue, so... :-)

I'm missing a really obvious step. Axocover is saying 'Hmm.. AxoCover found no unit tests...' in the Tests panel, but I do have some in the Solution - as per screenshot. Using Xunit, if that makes any odds.

image

axodox commented 7 years ago

Current release version only supports MSTest, Latest prerelease version supports XUnit. Go to https://github.com/axodox/AxoTools/releases and check latest xNUnitSupport build.

cseymr commented 7 years ago

Thanks, Péter. The latest version recognises the tests and can run them; but 'Cover' gets stuck on 'Initializing test runner...' Let me know what information I can send you if you need it.

StefH commented 7 years ago

I used version VS2017Support-1.1.57, however no Xunit tests are found.

Note that I'm using a netcoreapp1.1 for the tests.

For my project see https://github.com/StefH/System.Linq.Dynamic.Core

axodox commented 7 years ago

.Net core is not yet supported. It will come depending on how much free time I have, which is not much as of now.

axodox commented 7 years ago

@craigseymour I have made some significant changes which addressed issues resulting in same behavior as you described. Can you try latest xNUnitSupport release? Maybe it helps you too...

AlexanderTaeschner commented 7 years ago

Using xNUnitSupport-1.1.68 in VS2017 no tests are found for this project: https://github.com/aspnet/Microsoft.Data.Sqlite which uses xunit tests.

axodox commented 7 years ago

Json style projects and .Net core is not supported yet, it is planned after next major update.

sawilde commented 7 years ago

Currently OpenCover only support full pdbs - https://github.com/OpenCover/opencover/issues/601 We do have wip that supports portable and we are looking at supporting embedded PDBs (once we have the latter working then we will look to make a new release)

axodox commented 7 years ago

Great, by that time I should also have the xUnit, NUnit, MSTestV2 changes finished and released, so I can work on the .Net Core support. This will also require changes in AxoCover since the VS API to query these projects is different and I also need to make my test host .Net Core capable.

cseymr commented 7 years ago

xUnit stuff is now working great for us (bar some non-fatal errors about not being able to find runner.json files that we're not using). Thanks, Péter.

ComptonAlvaro commented 7 years ago

I will comment that if it would be interesting. I had problems with an assembly that is .net standard, because it wasn't covered by the tests. This is because in the properties of the project, in build options, in the button of advanced options, the PDBs was set as portable. When I changed that to full, then the assembly was added to the results of the tests.

Perhaps with .net Core it happens the same, that you have to change the PDBs to full.

grokky1 commented 7 years ago

Ms just released netstandard/core 2 which is much more complete and stable, so hopefully we'll see Core support soon... ☺️

watsonsong commented 6 years ago

I found the same problem because I am using the netcore2.0. Hope for this festure.

304NotModified commented 6 years ago

xUnit stuff is now working great for us (bar some non-fatal errors about not being able to find runner.json files that we're not using). Thanks, Péter.

Is that also working for .NET Standard 2 for you? I got this (not sure if that's the expected result for now):

image

axodox commented 6 years ago

Hi, I am sorry to say it, but I decided to hold off the .Net Core work for now.

Unfortunately I really don't have the free time required to support so many test frameworks and platforms by myself while they keep changing (along with Visual Studio updates). So I will stick with supporting what I actually need at work and some of the things people ask which still fit in the timeframe I am willing to put into it.

If you have more time than me, I am willing to give help to support .Net Core in AxoCover. So please tell and I will brief you on what has to be done.

There is a chance I will work with .Net Core next year, if that happens I will likely bring support for it at that time (might be half to one year from now).

304NotModified commented 6 years ago

This is a duplicate of #9. Would recommended to close one of the issues.

skynode commented 6 years ago

Hi @axodox. In reference to your comment, can you describe the detail and scope of the work that needs to be done in order to fully support .NET Core 2.x based on .NET Standard 2.0? If it's inconvenient to do so here, please send to me at dexter[dot]valkyrie[at]outlook.com.

Thanks!

axodox commented 6 years ago

Hi @skynode. I made a list for you below:

  1. I suggest to try OpenCover support for .Net Core out first without AxoCover, a post here provides a starting point: https://github.com/OpenCover/opencover/issues/756, note this will require changing some build settings of the target project unlike for the full framework. This should be done with latest published non-beta OpenCover.
  2. Then we need to solve how to integrate .Net Core with AxoCover. AxoCover uses its own runner, which in turn use forked versions of the VS runners for MSTest, xUnit and NUnit (these are to support some features, such as the hierarchic display of tests). Now, I would suggest to forget about the forks, and instead research the main problem, and I will do the integration in a weekend or two. My main problem is that the current runner is for the full framework, and I have found loading .Net Core dll-s into it problematic, esepcially the dependencies. Therefore we have some options: -- We port AxoCover runner to .Net Standard. This could work, will need some P/Invoke for some native code. Then we could run it with the dotnet tool and should be able to load dependencies. The dependency loading must be dynamic though. -- We use dotnet test, and offer a separate test runner, this will then need custom collectors to supply test output data, and the forked adapters need to be created for some features to work (or solve those features differently, I need to check into this). -- We use the vstest from now on, and get rid of forks etc.

Yes, as you see, best would be to refactor the code first (not that it is ugly, but it has some solutions currently which I want to replace, as they are hard to maintain - also I have more experience with these test frameworks now), to make the integration simpler. For now I suggest you to try the first step: get it working with OpenCover directly. And find out what needs to be done there. If and when that is OK, I will do some refactoring and then we can select a solution, be it vstest, dotnet test, or a ported AxoCover.Runner. Then we can split up the work and do it.

neurospeech commented 6 years ago

@axodox will this https://github.com/tonerdo/coverlet/ be helpful? Problem with OpenCover is it does not use portable pdb.

IFYates commented 6 years ago

Is anyone actively working on this? I don't know how much time I could dedicate to adding Core support, but I'm willing to make a start, if no one else has

IanIsFluent commented 5 years ago

Seems like it's not coming 😔