Xunit not working using Visual Studio Team Service

2019-05-23 15:45发布

问题:

After following several blogs detailing how to get xUnit working with Team Services Build vNext:

  • http://tech.trailmax.info/2014/01/run-xunit-in-hosted-team-foundation-service/

  • Running unit tests in TFS/VSO Build vNext using xUnit adapter

  • http://www.donovanbrown.com/post/2015/06/15/how-to-run-xunit-test-with-vnext-build

None of which worked for me. From examining the build logs I get the following warnings for each of my test assemblies.

--------------------
 Warning: [xUnit.net 00:00:00.1644156] Exception discovering tests from CHO.SAM.Business.Test: System.BadImageFormatException: 
 Could not load file or assembly 'c:\_Work\473cef3c\CHO\CHO.ALL\Tests\CHO.SAM.Business.Test\CHO.SAM.Business.Test\bin\Debug\xunit.execution.desktop.dll' or one of its dependencies. This assembly is built by a runtime newer than the currently loaded runtime and cannot be loaded.
--------------------

Has anyone seen this before? and if so did you figure out a solution?

My thoughts are; my test projects are compiled using .NET Framework 4.6, I was wondering if this could be causing the problem? If so I would have to move over to nUnit or something as I don't feel it's right to change the compilation just to use a single test framework.

回答1:

  • Add "/Framework:Framework45" to "Advanced/Other console options" (to run under .NET 4.5)
    or
  • Add "/Framework:Framework40" to "Advanced/Other console options" (to run under .NET 4.0)
    or
  • Change "Advanced/VSTest version" to "Visual Studio 2013" (to run under .NET 3.5)


回答2:

This error is normally caused by a x64 compiled assembly running on x86 test runner or vice versa. Check the solution build configuration that is being run.



回答3:

I had this same issue. Adding a UI test did not fix it for me. I found two alternatives that work:

  1. use .net 4.5

    OR

  2. Set the advanced options of the VSTest task to use 2013 instead of 2015.

Hopefully this will be fixed soon.



回答4:

In the end, I added a Visual Studio Coded UI test project and removed all it's contents (a class), it's empty!

I'm assuming it's added a reference or something that the build server felt it needed.

I am now getting my unit tests discovered, running and with code coverage.

Wierd!

It works, but I don't know why...



回答5:

I ran into this issue when using a .Net Core class library to run my xUnit tests against a .Net Core Web Project (.Net Framework). What solved the issue for me was to change the default processor for running test to X64 in VS2015 via:

Menu Bar -> Test -> Test Settings -> Default Processor Architecture -> X64

This solution was posted by @RehanSaeed here https://github.com/dotnet/cli/issues/3103