Uyumluluk testlerinin neden bağımsız olmadığını anlamaya çalışıyorum.Nancy OWIN test etkileşimi
Her testin önemli bir parçasıdır:
var builder = new ContainerBuilder();
// IoC registrations, typically SingleInstance lifetimes or RegisterInstance
var browser = new Browser(new CustomBootstrapper(builder));
// browser.Post...
// Assertions
Her test taze ContainerBuilder ve Tarayıcı örneklerini kullanır.
Testlerimizden biri bağımsız olarak çalıştırıldığında geçer, ancak benzer başka bir testle birlikte çalışırsa başarısız olur. Bu iki farklı test koşusunda (TestDriven.Net ve JetBrains) olur.
Cihazlar, ilk testte kullanılan ve IoC konteyner tarafından enjekte edilen bir nesnenin ikinci testte (ve orada oluşturulan nesne ile uyuşmuyor) HashCodes öğesini kontrol ederek görebilirsiniz. Yöntemler yanlış nesne üzerinde denir, bu nedenle test başarısız olur.
Bu kod statik üyeleri kullanmaz.
Nancy, Nancy.Testing veya OWIN çalışma şekliyle ilgili bir şeyi yanlış anladım mı? Bu testler birbirlerini nasıl etkileyebilir? İsteğiniz
, daha fazla ayrıntı: Ayrı TestFixture sınıfta
[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);
}
ya üzerinde hiçbir kurulum/devrelerde ile:
[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 şekilde bu etkiliyor olabilir mi? (Not: Ben CookieBasedSessions.Enable
ve- ayrı ayrı ve boru hattının yeni Session
oluşturarak beraber olarak, çıkarmadan çalıştı; bu sorunu etkilemedi.)
customBootstrapper Atılması her test ya hiç fark yaptıktan sonra.
(CustomBootstrapper
hiçbir statik alanlar vardır ve AutofacNancyBootstrapper
iner. Burada göndermek için çok uzun.) Bizim geliştiricilerin
Bu testleri temizlemek ve bunları başlatmak için kurulum yapmak için bir [TearDown] (http://nunit.org/index.php?p=teardown&r=2.6.4) kullanıyor musunuz veya bu yöntemde mi oturuyorsunuz? – lloyd
Daha fazla kod gösterebilir misiniz? Yani, bu kırılmalar ve tokometreyi çalıştırırken otlaronun kırılmasını sağlayan en uygun şey nedir? Ayrıca bunu kullanıyorsanız kurulum ve gözyaşı yöntemleri. – andreasnico
Ne @andreasnico diyor – Jon