私たちのインテグレーション・テストがなぜ独立しているのか理解しようとしています。ナンシー・オーイン・テスト・インタラクション
各テストの重要な部分は、次のとおりです。
var builder = new ContainerBuilder();
// IoC registrations, typically SingleInstance lifetimes or RegisterInstance
var browser = new Browser(new CustomBootstrapper(builder));
// browser.Post...
// Assertions
各テストは新鮮ContainerBuilderとブラウザのインスタンスを使用しています。
私たちのテストの1つは、独立して実行されたときに合格しますが、別の同様のテストと共に実行されると失敗します。これは、2つの異なるテストランナー(TestDriven.NetとJetBrains)で発生します。
インストルメントでは、最初のテストで使用され、IoCコンテナによって注入されたオブジェクトが2番目のテストで表示され、そこに作成されたオブジェクトと一致しないことをHashCodesで確認できます。メソッドが間違ったオブジェクトで呼び出されるため、テストは失敗します。
コードでは静的メンバーは使用されません。
Nancy、Nancy.Testing、またはOWINの仕組みについて誤解していますか?これらのテストはどのように互いに影響を及ぼしますか?要求ごと
、詳細:別のTestFixtureクラスで
[Test]
public void Test1()
{
var organizationCache = new OrganizationCache();
// Logs Creating OrganizationCache with HashCode:43641814 (varies by run)
organizationCache.AddOrganization(organization);
ContainerBuilder builder = AutofacTestContainerBuilderFactory.CreateTestContainerBuilder();
builder.RegisterInstance(organizationCache);
var browser = new Browser(new CustomBootstrapper(builder));
BrowserResponse browserResponse = browser.Post(
"/api/...",
with => with.JsonBody(model));
browserResponse.StatusCode.ShouldBe(HttpStatusCode.OK);
}
、いずれかのセットアップなし/ティアダウンとは:
[Test]
public void Test2()
{
var organizationCache = new OrganizationCache();
// Logs Creating OrganizationCache with HashCode:5337202 (varies by run)
organizationCache.AddOrganization(organization);
ContainerBuilder builder = AutofacTestContainerBuilderFactory.CreateTestContainerBuilder();
builder.RegisterInstance(organizationCache);
var browser = new Browser(new CustomBootstrapper(builder));
TestHelpers.Authenticate(browser); // log in (does a browser.Post)
BrowserResponse browserResponse = browser.Post(
"/api/...",
with => with.JsonBody(model));
browserResponse.StatusCode.ShouldBe(HttpStatusCode.Created);
// Passes if run independently, fails if run with other test
// When run with other test, system under test logs both OrganizationCache HashCodes during this test
}
CookieBasedSessionsは何とかこれに影響を与えていませんか? (注:私はCookieBasedSessions.Enable
アンド別々にパイプラインで新しいSession
を作成together-を削除しようとしたが、これは問題には影響を与えませんでした。)customBootstrapperの廃棄
各テストがいずれかの差は行われません後。
(CustomBootstrapper
には、静的なフィールドを持っていないとAutofacNancyBootstrapper
から下る。それはここに投稿するには長すぎるのです。)私たちの開発者の
[TearDown](http://nunit.org/index.php?p=teardard&r=2.6.4)を使ってこれらのテストをクリアして初期化するか、これがメソッドに入っていますか? – lloyd
さらにコードを表示できますか?つまり、それが壊れていることを示す単位テストと、それを実行するともう一方のブレークを引き起こす単位テストですか?あなたがそれを使用している場合は、セットアップとティアダウンの方法もあります。 – andreasnico
@andreasnicoとは何ですか – Jon