2016-07-11 29 views
2

我有一個編譯的項目,我想用xUnit進行測試。但是,儘管該項目允許我添加引用和構建,但只要向測試類添加using語句,就會看到紅色的波浪線,並且出現錯誤「找不到類型或名稱空間」。爲什麼.NET Core和xUnit不能識別我導入的命名空間?

即使我想測試的項目的xproj已被添加到引用,並且名稱空間確實存在。它必須是我所做的,但我看不到。使用早期版本的.net,我已經添加了數百次測試項目的引用,沒有任何問題。

那麼.NET的工作方式有什麼不同,爲什麼它不能識別我引用程序集中的命名空間?

更新:我已經刪除xUnit並獲得MSTest的工作,但我有同樣的問題。所以這可能是我設置dotnetcore的方式的一個特性,並且我的json文件中的引用比其他任何東西都更重要。

+0

看到你的'project.json'和相關的代碼會很有幫助。我的猜測是你沒有正確引用你的測試項目中的主項目。你在project.json中使用'target:project'嗎? (請參閱我的答案中的示例) –

回答

1

這種結構適用於我.NET核心1.0:

global.json

{ 
    "projects": [ "src", "test" ], 
    "sdk": { 
    "version": "1.0.0-preview2-003121" 
    } 
} 

的src /在MyLibrary/project.json

{ 
    "dependencies": { }, 
    "frameworks": { 
    "netstandard1.3": { 
     "dependencies": { 
     "NETStandard.Library": "1.6.0" 
     } 
    } 
    }, 
    "version": "1.0.0" 
} 

測試/ MyLibrary.Test/project.json

{ 
    "dependencies": { 
    "dotnet-test-xunit": "2.2.0-preview2-build1029", 
    "Microsoft.NETCore.App": { 
     "type": "platform", 
     "version": "1.0.0" 
    }, 
    "MyLibrary": { 
     "target": "project", 
     "version": "1.0.0" 
    }, 
    "xunit": "2.1.0" 
    }, 
    "frameworks": { 
    "netcoreapp1.0": { 
     "imports": [ 
     "dnxcore50", 
     "portable-net45+win8" 
     ] 
    } 
    }, 
    "testRunner": "xunit", 
    "version": "1.0.0" 
} 

使用此目錄和項目結構,Visual Studio Test Explorer和dotnet test都可以運行,並且可以運行xUnit測試。

+0

我將json文件的建議直接剪切並粘貼到我的項目中,但我遇到了同樣的問題。正如我在測試項目中添加對我的類型的引用的兒子一樣,我在名稱空間下面看到了紅色的小波形,並且我不能在我的項目中引用任何有用的東西。 一位同事建議他們讀到xUnit和MSTest不能在Web項目中使用導入的程序集。 這是我需要研究的東西,但如果屬實,那麼它是發佈團隊的主要失算IMO – Matt

+0

@Matt當您運行'dotnet restore'時會發生什麼?編譯時會發生什麼? –

+0

還原完成。只是關於鎖定文件的一些評論不會改變,但它也會恢復Iisintegration.Tools。 編譯 - 如果通過使用導入命名空間我得到CS2046 - 類型或命名空間錯誤。如果我評論他們一切正常。基本斷言無論如何運行都很好(Assert.Equal(2,2); – Matt

相關問題