我開始一個新的ASP.net vNext/MVC6項目,我想用xUnit來測試它。爲什麼xUnit無法找到我的DNX測試?
我已經關注了DNX項目的instructions on the xUnit web site。
當我嘗試運行在Visual Studio的測試,或者使用內置的流道或ReSharper的,我收到此錯誤信息:
如果我嘗試運行從測試命令行中,我得到這個:
xUnit.net DNX Runner (32-bit DNX 4.5.1) Discovering: TA.Product.Tests Discovered: TA.Product.Tests Starting: TA.Product.Tests TA.Product.Tests.Class1.FactMethodName [FAIL] System.NullReferenceException : Object reference not set to an instance of an object. Stack Trace: D:\VS-Projects\TA.Product\src\TA.Product.Tests\Class1.cs(25,0): at TA.Product.Tests.Class1.FactMethodName() Finished: TA.Product.Tests === TEST EXECUTION SUMMARY === TA.Product.Tests Total: 1, Errors: 0, Failed: 1, Skipped: 0, Time: 2.216s
這是我的project.json
文件:
{
"version": "1.0.0-*",
"description": "TA.Product.Tests Class Library",
"authors": [ "Tim" ],
"tags": [ "" ],
"projectUrl": "",
"licenseUrl": "",
"dependencies": {
"TA.Product": "1.0.0-*",
"xunit": "2.1.0",
"xunit.runner.dnx": "2.1.0-rc1-build204"
},
"commands": {
"test": "xunit.runner.dnx"
},
"frameworks": {
"dnx451": { },
"dnxcore50": {
"dependencies": {
"Microsoft.CSharp": "4.0.1-beta-23516",
"System.Collections": "4.0.11-beta-23516",
"System.Linq": "4.0.1-beta-23516",
"System.Runtime": "4.0.21-beta-23516",
"System.Threading": "4.0.11-beta-23516"
}
}
}
}
我發現this question,我的xUnit runner版本似乎與我的DNX版本RC1-Update1相匹配。
我還發現this question,說我的測試必須是公開的,他們是。
請問您有什麼想法?
所以這不是一個完整的答案,但我知道R#的xunit測試運行器擴展無法運行DNX測試 - 因爲它在dll的錯誤位置查找。 Class1的第25行看起來像什麼(在'FactMethodName'方法中)? – danludwig
@danludwig我不完全確定這條線是什麼,但你的觀點非常有道理。因此,R#runner找不到測試,因爲編譯器沒有發出任何輸出文件,對吧?這些都是通過aspnet5在內存中完成的。所以我實際看到的是兩個不同的問題。它看起來像我的代碼導致NullReferenceException。 –
是的。第二個從命令行運行'dnx test'的程序不會崩潰,它會成功並告訴你有1個失敗的測試。您可以設置您的項目以發出輸出文件(程序集dll),但仍然R#不會在默認情況下生成它的位置。它應該使用默認的VS 2015測試資源管理器。 – danludwig