xUnit.net v2在Visual Studio 2015中无法发现.NET Core测试

14

我对这个问题感到非常沮丧。我已经尝试更改版本号,但测试浏览器中没有显示任何测试。

在测试输出窗口中,我可以看到这个输出

Starting Microsoft.Framework.TestHost [C:\Users\sul\.dnx\runtimes\dnx-clr-win-x86.1.0.0-beta4\bin\dnx.exe --appbase "path to test project" Microsoft.Framework.ApplicationHost --port 63938 Microsoft.Framework.TestHost --port 63954 list ]
Unable to start Microsoft.Framework.TestHost
========== Discover test finished: 0 found (0:00:36.5471185) ==========

这个很脆弱,有时会显示测试,然后它们就会消失得无影无踪。重启VS没有帮助,重新安装xunit/xunit runner也没有帮助。

在另一个测试项目中我得到了不同的输出,但仍然没有显示测试。

Starting Microsoft.Framework.TestHost [C:\Users\sul\.dnx\runtimes\dnx-clr-win-x86.1.0.0-beta4\bin\dnx.exe --appbase "path to project" Microsoft.Framework.ApplicationHost --port 63938 Microsoft.Framework.TestHost --port 64421 list ]
Connected to Microsoft.Framework.TestHost
Discovering tests in 'path to project\project.json'
========== Discover test finished: 0 found (0:00:35.9341416) ==========

这是我的project.json的一部分

"commands": {
    "test": "xunit.runner.dnx"
  },
  "dependencies": {
    "Microsoft.AspNet.Http": "1.0.0-*",    
    "Microsoft.AspNet.Http.Core": "1.0.0-*",
    "Microsoft.AspNet.TestHost": "1.0.0-*",    
    "Moq": "4.2.1502.911",    
    "xunit": "2.0.0",
    "xunit.runners": "2.0.0"

我知道你已经标记这个问题为已解决,但是你是否使用ReSharper呢?我通过安装ReSharper的xUnit测试运行器扩展并重启Visual Studio来解决了这个问题。 - dball
谢谢您的评论。不,我没有使用Resharper。 - Sul Aga
5个回答

5
我最近在使用TFS时遇到了一些问题。我在一台机器上设置好并使其工作正常,然后到另一台机器上去,检入我的更改后获取了最新的代码,一切显示正常,但测试运行程序却无法找到任何测试。最终,对测试项目进行简单的清理和重建就解决了这个问题,现在能够找到测试。
以下是我的project.json文件内容:
"dependencies": { "Xunit": "2.1.0-beta2-*", "Xunit.runner.dnx": "2.1.0-beta2-*" }, "commands": { "test": "xunit.runner.dnx" }
请注意,依赖项中列出的Xunit中的首字母“X”是大写的。官方文档将其列为小写字母“x”,但这不起作用。我已经通过电子邮件告知该代码库的所有者以引起他的注意。
更新:我与XUnit的作者交谈,他向我保证小写字母“x”对他和其他人都有效,并且可能是包缓存损坏的问题。

如果您的程序包缓存已损坏,该如何修复?我也被告知Visual Studio内部存在一些损坏问题,可以通过清理%TEMP%文件夹来解决。 - Warren P

1
我通过确保解决方案项目中的所有软件包引用相同版本,成功使其工作。
这是因为我正在引用最新版本,如project.json所示。
我还做了一件事,就是永远不要仅引用符合目的的单个软件包。例如,在我的业务项目中,我正在创建一个中间件,并且我正在引用Microsoft.AspNet.Http,因为我不需要完整的MVC软件包。这会在测试项目中引起问题,因此我将Microsoft.AspNet.MVC添加到任何需要任何类型的Http交互(即httpcontext)的项目中。
这可能不是最理想的解决方法,但对我有效。我希望这能帮助其他遇到相同问题的人。

1

我遇到了一些问题,但是现在已经解决了!

"dependencies": {
    "Test.ANNe.Compiler": "1.0.0-*",
    "xunit.runner.dnx": "2.1.0-beta2-build79"
},

"commands": {
    "Test.Console": "Test.Console",
    "test": "xunit.runner.dnx"
},

我遇到了三个问题: 1. 只能有一个运行器! 2. 在命令中测试。 3. 确保编译环境与dnvm中设置的环境相匹配。

我注意到你正在使用dnx-clr-win-x86.1.0.0,这是dnx但不是dnx运行器。


1

遇到了类似的问题,从xunit 2.0.0-rc1更改到2.0.0-beta8解决了该问题。

详细情况如下:

  • 项目A(Microsoft.AspNet.Authentication.Test的旧版本)可以正常工作
  • 项目B(我的自定义项目)无法工作

将项目B设置为使用:

"xunit.runner.aspnet": "2.0.0-aspnet-beta8*"

改为:

"xunit.runner.aspnet": "2.0.0-aspnet-*"

已解决问题。项目B正在接收:
xunit.runner.aspnet (2.0.0-aspnet-rc1-15669)

项目A使用了以下的project.json文件:
{
    "compilationOptions": {
        "warningsAsErrors": "true"
    },
    "dependencies": {
        "Microsoft.AspNet.Authentication.Cookies": "1.0.0-*",
        "Microsoft.AspNet.Authentication.Facebook": "1.0.0-*",
        "Microsoft.AspNet.Authentication.Google": "1.0.0-*",
        "Microsoft.AspNet.Authentication.MicrosoftAccount": "1.0.0-*",
        "Microsoft.AspNet.Authentication.OAuthBearer": "1.0.0-*",
        "Microsoft.AspNet.Authentication.OpenIdConnect": "1.0.0-*",
        "Microsoft.AspNet.Authentication.Twitter": "1.0.0-*",
        "Microsoft.AspNet.DataProtection": "1.0.0-*",
        "Microsoft.AspNet.TestHost": "1.0.0-*",
        "Moq": "4.2.1312.1622",
        "xunit.runner.aspnet": "2.0.0-aspnet-*"
    },
    "commands": {
        "test": "xunit.runner.aspnet"
    },
    "frameworks": {
        "dnx451": {
            "dependencies": {
                "Shouldly": "1.1.1.1"
            }
        }
    }
}

项目B使用了:

{
    "dependencies": {
        "Microsoft.AspNet.Authentication": "1.0.0-*",
        "Microsoft.AspNet.Authentication.OAuth": "1.0.0-*",
        "Microsoft.AspNet.Authentication.Cookies": "1.0.0-*",
        "Microsoft.Framework.DependencyInjection": "1.0.0-*",
        "Microsoft.AspNet.TestHost": "1.0.0-*",
        "Moq": "4.2.1312.1622",
        "xunit.runner.aspnet": "2.0.0-aspnet-*"
    },
    "commands": {
        "test": "xunit.runner.aspnet"
    },
    "frameworks": {
        "dnx451": {
            "dependencies": {
                "Shouldly": "1.1.1.1"
            }
        }
    }
}

1
以下这些依赖项(在项目.json中提供)对我很有用(原始来源):
"dependencies": {
    "System.Collections": "4.0.10-beta-23019",
    "System.Linq": "4.0.0-beta-23019",
    "System.Threading": "4.0.10-beta-23019",
    "System.Runtime": "4.0.10-beta-23019",
    "Microsoft.CSharp": "4.0.0-beta-23019",

    "xunit": "2.1.0-*",
    "xunit.runner.dnx": "2.1.0-*",
    "xunit.runner.visualstudio": "2.0.1",
    "Microsoft.Framework.TestHost": "1.0.0-*",
    "Microsoft.Framework.ApplicationHost": "1.0.0-*"
}

只有更新到xunit的“2.2.0-*”版本才适用于我。 - zabulus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接