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

Support for xUnit 2.3 #129

Open brutaldev opened 6 years ago

brutaldev commented 6 years ago

Please add support for xUnit 2.3

304NotModified commented 6 years ago

What's now not working with xUnit 2.3? What needs to be done?

brutaldev commented 6 years ago

Tests are not discovered in the AxoCover Visual Studio tests pane for projects that reference xUnit 2.3. The plugin/extension seems quite adamant that it only supports xUnit 2.2 although I'm not certain why that is.

304NotModified commented 6 years ago

I guess strong naming issues

jotatoledo commented 6 years ago

any ETA for this feature? @axodox BTW, thanks for this great tool!

axodox commented 6 years ago

AxoCover was originally made for MSTEST for my personal use. Xunit was requested by community, but it to work properly, I needed to fork its runner and add a small change. This same change was requested by others before me multiple times in fact and was always rejected. So I need to keep the fork alive.

The other issue is that Xunit runner and library is only working if they are the same version, unlike nunit and mstest, which works even with different combinations quite well.

Updating the fork to Xunit 2.3 is not much work for me, if I break the 2.2 compatibility. To keep both 2.2 and 2.3 however, I need to have 2 forks for the 2 versions and possibly even more later. And for this I need to design a solution which can support this versioning. Or look for other possible solutions.

I don't have much free time either. So if you are willing to help I can point you what needs to be done.

304NotModified commented 6 years ago

The other issue is that Xunit runner and library is only working if they are the same version, unlike nunit and mstest, which works even with different combinations quite well.

Is this because of strong naming?

I don't have much free time either. So if you are willing to help I can point you what needs to be done.

Where is the fork located?

304NotModified commented 6 years ago

Updating the fork to Xunit 2.3 is not much work for me, if I break the 2.2 compatibility. To keep both 2.2 and 2.3 however, I need to have 2 forks for the 2 versions and possibly even more later. And for this I need to design a solution which can support this versioning. Or look for other possible solutions.

I think it's OK to support only the latest version for now. Especially if we could install older versions of AxoCover

axodox commented 6 years ago

No, it is because the internal changes between minor versions are substantial, e.g. dll name changes, namespace, class renames, interface incompatibility etc. AxoCover uses the runner for visual studio internally, the break is between the different versions of the runner vs. the lib. this also causes the tests sometime to not show up in VS either, e.g. when you don't update the runner etc.

Fork is at: https://github.com/axodox/visualstudio.xunit

axodox commented 6 years ago

The changes are on the AxoCover branch, you will need to pull the new code from the actual xunit remote (so need to add a remote in git), then you merge the changes, build. After that a nuget package is created and AxoCover is updated to it. Then it will support 2.3, but not 2.2 anymore. (Which I am OK with too, since I don't actually use xunit, as our shop is mstest only.)

Siderite commented 6 years ago

xUnit 2.2.0 breaks some of the tests on my project. 2.3.1 works great. Can you tell me what I need to change in AxoCover to support 2.3.1 on my machine? Thanks!

axodox commented 6 years ago

You need to update the fork: https://github.com/axodox/visualstudio.xunit to xUnit 2.3.1 then build AxoCover with it.

Panzki commented 6 years ago

Did anyone had success using axocover with xUnit 2.3.?

@axodox Could you please elaborate? I'm not entirely sure how to proceed.

adamralph commented 6 years ago

@axodox it may be better to close this issue as a "won't fix", with a clear statement on your position, which as I understand it, is:

AxoCover supports xunit only up to version 2.2. There are no plans to support later versions of xunit. If you would like to add support for later versions of xunit, please fork the project.

axodox commented 6 years ago

@adamralph It is not there are no plans or similar, but I have put the project on the parking lane for a while now, as it consumed too much of my free time for years. Another reason is that most of the development I do right now at work either web based or in C++, and the .Net part uses MSTest V1. I understand your frustration. If someone updates AxoCover support, I will integrate it.

axodox commented 6 years ago

@Panzki You should compare the AxoCover and master branches of the mentioned VS xunit plug-in fork. Those changes need to be migrated to the version of XUnit you need. Then we can package it with AxoCover for the updated support. It should be doable in less than a day.

axodox commented 6 years ago

@Panzki https://github.com/axodox/visualstudio.xunit is used to generate a nuget package, which is used inside AxoCover. So if you have migrated to the latest version, simply generate the nuget package and put into AxoCover dependencies (or for testing just copy the DLLs). Theoretically this should suffice, if there is a difference in the file list, you might need to check the code in AxoCover providing Xunit support: https://github.com/axodox/AxoCover/tree/master/AxoCover/Models/Testing/Adapters

adamralph commented 6 years ago

...I have put the project on the parking lane for a while now, as it consumed too much of my free time for years. Another reason is that most of the development I do right now at work either web based or in C++...

Perhaps it's time to hand over the reins to someone else?

axodox commented 6 years ago

I am open to that too, if there is someone willing to take over the work.

adamralph commented 6 years ago

@axodox I took the liberty of raising a PR over at maintainers-wanted.

raytangRT commented 6 years ago

@adamralph does it work with xunit 2.4?

adamralph commented 6 years ago

@raytangRT I'm the wrong person to ask, since I've never even used AxoCover. I'm only following this issue because of this: https://github.com/xbehave/xbehave.net/issues/434#issuecomment-386868043

However, to my knowledge, AxoCover only supports xunit 2.2.

raytangRT commented 6 years ago

@adamralph sorry, I did not read the PR properly, I thought you are the one who did a PR on this project and make it support 2.3

VinS101 commented 5 years ago

Support for xUnit 2.4. would be awesome. I can work on it.

304NotModified commented 5 years ago

@VinS101 Please do 👍

jsabrooke commented 5 years ago

@VinS101 any chance you got anywhere with this?

VinS101 commented 5 years ago

@jsabrooke Haven't started any work yet. It's in my backlog.

VinS101 commented 5 years ago

I'm not sure what happened, but axoCovered started working for me. I have xUnit 2.4.

malcolmarobertson commented 5 years ago

I'm not sure what happened, but axoCovered started working for me. I have xUnit 2.4.

I have just upgraded to xUnit 2.4 but still no tests found, did you do anything else to your project before upgrading?

VinS101 commented 5 years ago

@malcolmarobertson The only thing I can think of: I updated my VS2017 to version 15.9.6 a couple weeks ago.

These are my axoCover settings: image

biancarus88 commented 5 years ago

hey @VinS101 . Unfortunately just tried upgrading VS2017 to 15.9.7, but still the tests are not recognized. I am using xUnit 2.4.1 .. Did anyone else manage to get this working?

malcolmarobertson commented 5 years ago

EDIT: I am using VS2017 16.9.6, xUnit 2.4.1

I got it working using the settings below, but first I followed steps to register OpenCover dll.

  1. Install OpenCover on your Test project from Package Manager
  2. Open CMD as admin
  3. navigate to new packages\OpenCover directory
  4. run \packages\OpenCover.4.7.922\tools\x64>regsvr32 /i OpenCover.Profiler.dll (use x86 if you are using 32bit)

Source for OpenCover registering dll: https://github.com/axodox/AxoCover/issues/172

Then my settings look like this: image image

biancarus88 commented 5 years ago

hey @malcolmarobertson . sorry for the late answer. I have registered the OpenCover.dll as you suggested and worked fine, changed the settings to match yours as well, tried to force it both x64 and x86, but no luck for me. I am using VS2017 Professional, just updated to 15.9.8. You are using VS2017 15.9.6?

malcolmarobertson commented 5 years ago

I don't think VS version is an issue, when you build your project and then reopen AxoCover are there any errors in the output pane? You may need to select AxoCover from the output window dropdown.

On Wed, 06 Mar 2019, 14:44 Bianca Rus, notifications@github.com wrote:

hey @malcolmarobertson https://github.com/malcolmarobertson . sorry for the late answer. I have registered the OpenCover.dll as you suggested and worked fine, changed the settings to match yours as well, tried to force it both x64 and x86, but no luck for me. I am using VS2017 Professional, just updated to 15.9.8. You are using VS2017 15.9.6?

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/axodox/AxoCover/issues/129#issuecomment-470112014, or mute the thread https://github.com/notifications/unsubscribe-auth/AQRsUTMLntCVwIVAoT-ksgG8XGWjeuaIks5vT8ZCgaJpZM4P7REt .

nudemeth commented 5 years ago

I've updated xUnit dependencies and compiled the project to support version 2.4.1. Tested in my local VS 2017 and have no problems so far. Uploaded link.

NickGowdy commented 5 years ago

Hey @axodox , I had problems getting AxoCover to detect my tests with xUnit 2.4 and only got it to work by downgrading to xUnit 2.2. Is there any future plans for xUnit support for the latest version (2.4)?