2016-04-14 62 views
1

TestFixture kullanarak rahibe ile çapraz tarayıcı testi uygularken, birlikte çalıştığımda testler başarısız oluyor, tek tek çalıştırıldığında iletiliyor. SendKeys yöntemi çağrıldığında istisna atandı çünkü argüman null, fakat bu bir sebep değil çünkü bu testi tekrar yaptığımda test geçecek. Tabii ki bu sorunu ayıklamaya çalıştım ama çözüm bulamıyorum. Basit OpenHomePage Testi iyi çalışıyor. İşte benim kodudur:Birlikte çalıştırıldığında test başarısız, tek tek çalıştırıldığında iletildi

[TestFixture(typeof(ChromeDriver))] 
[TestFixture(typeof(FirefoxDriver))] 
public class TestClass<TWebDriver> where TWebDriver : IWebDriver, new() 
{ 
    [OneTimeSetUp] 
    public void CreateDriver() 
    { 
     try 
     { 
      PropertiesCollection.driver = new TWebDriver(); 
      Console.WriteLine("Opened browser"); 
      PropertiesCollection.driver.Url = "http://localhost:81/"; 
      Console.WriteLine("Opened URL"); 
      PropertiesCollection.driver.Manage().Window.Maximize(); 
      //initialize test data from excel sheet 
      ExcelLib.PopulateInCollection(@"c:\users\bolec\documents\visual studio 2015\Projects\RowingSectionTests\RowingSectionTests\TestData.xlsx"); 
     } 
     catch (Exception msg) 
     { 
      Console.WriteLine(msg.ToString()); 
     }         
    } 

    [OneTimeTearDown] 
    public void FixtureTearDown() 
    { 
     HomePageObjects homeObj = new HomePageObjects(); 
     homeObj.Logoff(); 
     if (PropertiesCollection.driver != null) PropertiesCollection.driver.Quit(); 
    } 

    [TearDown] 
    public void TearDown() 
    { 
     //Take screen on failure 
     if (TestContext.CurrentContext.Result.Outcome.Status.Equals(TestStatus.Failed)) 
     { 
      string fileName = Regex.Replace(TestContext.CurrentContext.Test.FullName + "_" + DateTime.Now.ToString(), "[^a-z0-9\\-_]+", "_", RegexOptions.IgnoreCase); 
      ((ITakesScreenshot)PropertiesCollection.driver).GetScreenshot().SaveAsFile(@"c:\users\bolec\documents\visual studio 2015\Projects\RowingSectionTests\RowingSectionTests\Screenshots\" + fileName + ".png", System.Drawing.Imaging.ImageFormat.Png); 
     } 
    } 

    //will always passed 
    [Test] 
    public void OpenHomePage() 
    {   
     HomePageObjects homeObj = new HomePageObjects(); 
    } 

    //login with correct credentials will login to acc 
    [Test] 
    public void Login() 
    {    
     HomePageObjects homeObj = new HomePageObjects(); 
     LoginPageObjects loginObj = homeObj.ToLoginPage(); 
     loginObj.Login(ExcelLib.ReadData(1, "UserName"), ExcelLib.ReadData(1, "Password")); 

     //checking is URL correct after loggin 
     Assert.AreEqual("http://localhost:81/", PropertiesCollection.driver.Url.ToString()); 
     //checking is login is correct on navbar 
     Assert.AreEqual(homeObj.GetUserLoginStringInButton().ToLower(), ExcelLib.ReadData(1, "UserName").ToLower()); 
    } 
+0

Nope. NUnit V3'ü kullandığından (aksi halde derleme yapmaz) OneTimeSetUp ve OneTimeTearDown doğrudur. TestFixtureXxxxxXx öznitelikleri V3'te kullanımdan kaldırılmıştır, ancak aynı şeyi yapar. – Charlie

+0

Paralel yürütmeyi etkinleştirdiniz mi? Eğer öyleyse, iki armatür birbiriyle çakışıyor olabilir. – Charlie

+0

ÖzelliklerCollection.driver bir statik midir? Eğer öyleyse, aynı verileri kullanarak iki farklı fikstür var. Kesinlikle paralel çalışmayacak. Paralel değilse, her test kendi kendini temizlemelidir. – Charlie

cevap

1
statik PropertiesCollection kullanarak sorun bir testte statik sınıfının herhangi bir değişiklik (aynı şansını yapmadan veya çok yüksek bir test bağımlılık yaratan diğer testte yansıyacaktır olmasıdır

keşfettiniz).

İki seçeneğiniz var, önce statik kullanmayın, bunun yerine bir örnek oluşturun. Alternatif olarak, bir kurulumda ve göz atma yöntemlerinde, PropertiesCollection öğenizi gerekli duruma getirdiğiniz/sıfırladığınızdan emin olun.

OneTimeSetUp özniteliğini kullanmak da, yalnızca fikstürünüzdeki tüm testler için bir kez çalıştığından risklidir.