2016-11-29 4 views
0

Ich versuche Integrationstests zu meinem Projekt hinzuzufügen, aber ich erhalte den Fehler "Der Typ oder Namespace-Name 'Startup' konnte nicht gefunden werden" in meinen Tests. CS-Datei.Der Typ oder Namespacename 'Startup' konnte nicht gefunden werden

Ich habe zwei project.json Dateien, eine in meinem src Projekt und die andere in meinem Testprojekt.

Src project.json sieht wie folgt aus:

{ 
"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"}} 

Das Test project.json wie folgt aussieht:

{ 
"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" 
    ] 
}}} 

Meine Tests.cs Klasse sieht wie folgt aus:

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(); 
} 
}} 

Weiß jemand, warum ich diesen Fehler bekomme? Danke im Voraus!

+1

Wo ist Ihre 'Startup'-Klasse definiert? Möglicherweise müssen Sie eine Anweisung 'using' hinzufügen, die sich auf Ihren Namespace bezieht, oder den vollständigen Klassennamen mit dem Namespace' Your.Namespace.Startup' verwenden. – Ricky

Antwort

1

Ich sehe in Ihrem Project.json in Ihrem Testprojekt

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

So bedeutet es Ihre Startup-Klasse in diesem Projekt ist. Um in Ihrem Test.cs erkannt werden Sie müssen nur die using

using [namespace the Startup class is in]; 

hinzufügen Und das sollte gerade diese sein.

Hinweis: Wenn Sie Visual Studio verwenden, wenn Sie etwas nicht so erkannt haben. Klicken Sie darauf und dann auf CTRL + . (oder klicken Sie mit der rechten Maustaste und Quick action and refactoring mit VS2015)

Verwandte Themen