2016-11-29 108 views
0

我試圖將集成測試添加到我的項目中,但在我的測試中,我一直收到錯誤「類型或名稱空間名稱」啓動「找不到」。 cs文件。無法找到類型或名稱空間名稱'Startup'

我有兩個project.json文件,一個在我的src項目中,另一個在我的測試項目中。

的Src project.json看起來是這樣的:

{ 
"dependencies": { 
"Microsoft.NETCore.App": { 
    "version": "1.0.1", 
    "type": "platform" 
}, 
"Microsoft.EntityFrameworkCore.SqlServer": "1.0.0", 
"Microsoft.EntityFrameworkCore.Tools": { 
    "version": "1.0.0-preview2-final", 
    "type": "build" 
}, 
"Microsoft.AspNetCore.Mvc": "1.0.1", 
"Microsoft.AspNetCore.Routing": "1.0.1", 
"Microsoft.AspNetCore.Server.IISIntegration": "1.0.0", 
"Microsoft.AspNetCore.Server.Kestrel": "1.0.1", 
"Microsoft.AspNetCore.StaticFiles": "1.0.0-*", 
"Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0", 
"Microsoft.Extensions.Configuration.FileExtensions": "1.0.0", 
"Microsoft.Extensions.Configuration.Json": "1.0.0", 
"Microsoft.Extensions.Configuration.CommandLine": "1.0.0", 
"Microsoft.Extensions.Logging": "1.0.0", 
"Microsoft.Extensions.Logging.Console": "1.0.0", 
"Microsoft.Extensions.Logging.Debug": "1.0.0", 
"Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0", 
"Npgsql.EntityFrameworkCore.PostgreSQL": "1.0.2", 
"Swashbuckle": "6.0.0-beta902" }, 
"tools": { 
"Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final", 
"Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final", 
// "Microsoft.EntityFrameworkCore.Tools.DotNet": "1.0.0-preview2-final", 
"Microsoft.Extensions.SecretManager.Tools": "1.0.0-preview2-final"}, 
"frameworks": { 
"netcoreapp1.0": { 
    "imports": [ 
    "dotnet5.6", 
    "portable-net45+win8"]}}, 
"buildOptions": { 
"emitEntryPoint": true, 
"preserveCompilationContext": true, 
"debugType": "portable", 
"xmlDoc": true}, 
"runtimeOptions": { 
"configProperties": { 
    "System.GC.Server": true 
}}, 
"publishOptions": { 
"include": [ 
    "wwwroot", 
    "**/*.cshtml", 
    "appsettings.json", 
    "web.config", 
    "Dockerfile.debug", 
    "Dockerfile", 
    "docker-compose.debug.yml", 
    "docker-compose.yml" 
]}, 
"scripts": { 
"postpublish": [ 
    "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" 
]}, 
"tooling": { 
"defaultNamespace": "api"}} 

測試project.json看起來是這樣的:

{ 
"version": "1.0.0-*", 
"buildOptions": { 
"debugType": "portable"}, 
"dependencies": { 
"System.Runtime.Serialization.Primitives": "4.1.1", 
"xunit": "2.1.0", 
"dotnet-test-xunit": "1.0.0-rc2-*", 
"SrcService": { 
    "target": "project" 
}, 
"Microsoft.AspNetCore.TestHost": "1.0.0"}, 
"testRunner": "xunit", 
"frameworks": { 
"netcoreapp1.0": { 
    "dependencies": { 
    "Microsoft.NETCore.App": { 
     "type": "platform", 
     "version": "1.0.1" 
    } 
    }, 
    "imports": [ 
    "dotnet5.4", 
    "portable-net45+win8" 
    ] 
}}} 

我Tests.cs類看起來是這樣的:

using System; 
using Xunit; 
using Microsoft.AspNetCore.TestHost; 
using System.Net.Http; 
using Microsoft.AspNetCore.Hosting; 


namespace Tests 
{ 
public class Tests 
{ 
    public TestServer server { get; } 
    public HttpClient client { get; } 

    public Tests(){ 
     var builder = new WebHostBuilder().UseStartup<Startup>(); 
     server = new TestServer(builder); 
     client = server.CreateClient(); 
    } 

[Fact] 
public async void TestVisitRoot() { 
    var response = await client.GetAsync("/"); 
    response.EnsureSuccessStatusCode(); 
} 
}} 

有誰知道我爲什麼得到這個錯誤?提前致謝!

+1

您的Startup類定義在哪裏?你可能需要添加一個'using'指令來引用你的命名空間,或者在命名空間'Your.Namespace.Startup'中使用完整的類名。 – Ricky

回答

1

我在你Project.json看到在您的測試項目

"SrcService": { 
    "target": "project" 
} 

因此,這意味着您的啓動類是在這個項目。 爲了在您的test.cs中承認你只需要添加using

using [namespace the Startup class is in]; 

這應該只是這一點。

提示:如果您使用的是Visual Studio,但是當您沒有像這樣識別的東西時。只需點擊它,然後按CTRL + .(或者右鍵單擊並使用VS2015輸入Quick action and refactoring

相關問題