2016-11-29 25 views
0

私は自分のプロジェクトに統合テストを追加しようとしていますが、テスト中に "タイプまたは名前空間名 'Startup'が見つかりません。 csファイル。型または名前空間名 'Startup'が見つかりませんでした

2つのproject.jsonファイルがあります.1つはsrcプロジェクトに、もう1つはテストプロジェクトにあります。

の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は次のようになります。

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

{ 
"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クラスは、このようになります。

なぜこのエラーが出るのですか?前もって感謝します!

+1

あなたの 'Startup'クラスはどこに定義されていますか?ネームスペースを参照する 'using'ディレクティブを追加するか、名前空間' Your.Namespace.Startup'でフルクラス名を使用する必要があります。 – Ricky

答えて

1

私はそれがあなたのスタートアップクラスは、このプロジェクトであることを意味し

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

テストプロジェクトであなたのProject.jsonで参照してください。 あなたのTest.csに認識させるために、あなただけのusing

using [namespace the Startup class is in]; 

を追加するために、それはちょうどこのする必要があります必要があります。

ヒント:Visual Studioを使用している場合は、このように認識されないものがあるとき。それをクリックしてCTRL + .を押すか、または右クリックしてQuick action and refactoringとVS2015を入力してください。

関連する問題