2016-07-11 24 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

相关问题