2013-07-23 14 views
9

Mam metodę testowania, która pobiera dwa pliki XML jako dane wejściowe i porównuje je. Korzystam z ramy Microsoft.VisualStudio.TestTools.UnitTesting na .NET 4.5. Chcę zmodyfikować metodę testowania tak, aby wykonywała wiele plików XML (dwa na raz w parze), uruchamia test i podaje wyniki osobno.Testowanie danych w języku C# przy użyciu tablic

Próbowałem następujący kod, ale daje tylko jedno pojedyncze wyjście i zatrzymuje się, gdy jakakolwiek para plików wejściowych nie przejdzie testu.

string[] source = {file1, file2, file3, file4....}; 
string[] target = {fileA, fileB, fileC, fileD....}; 

[Test Method] 
public void TestCase01() 
{ 
     TestLogic testObj = new TestLogic(); //class containing the comparison method 
     for (int i = 0; i < source.Length; i++) 
     { 
      Assert.IsTrue (testObj.VerifyFiles(source[i], target[i])); 
     } 
} 

Po wykonaniu niektórych badań okazało się, że atrybut DataSource mogą być użyte. Ale nie wiem, jak przekazać dwie tablice (lub pojedynczą tablicę dwuwymiarową) do atrybutu DataSource. Wolałbym używać Microsoft.VisualStudio.TestTools.UnitTesting do testowania i innych frameworków zewnętrznych, takich jak NUnit tylko w ostateczności.

Edytuj: Nie wiem, ile plików wejściowych. Użyłem 4 plików jako przykładu. Przed przekazaniem plików do TestMethod paruję je za pomocą ich identyfikatorów. Najpierw odczytałem dwa zestawy plików z dwóch różnych folderów, sparowałem je na podstawie ich identyfikatora, a następnie przekazałem sparowane pliki do testowego testu. Sposób, w jaki teraz to robię polega na tym, że zapisuję sparowane nazwy plików (źródło i cel) w tablicy lub liście, a następnie przekazuję je do sprawy testowej. Oczywiście ta metoda nie działa i mam problem, jak wspomniano powyżej.

Odpowiedz

0

Po prostu equate może działać instancja Datasource = Array. Wiersze źródła danych w pętli i wartości wiersza jako instancja tablicy.

+5

Czy mógłbyś trochę rozwinąć? Może dasz mu kod demonstracyjny. – Vijay

7

Możesz użyć jako DataSource pliku csv, który będzie posiadał kolumny do holowania (jeden dla źródła i jeden dla celu). Następnie w teście używać go w sposób następujący:

[TestClass] 
public class TestCase 
{ 
    [TestMethod] 
    [DataSource("Microsoft.VisualStudio.TestTools.DataSource.CSV", "files.csv", "files#csv", DataAccessMethod.Sequential)] 
    public void TestCase() 
    { 
     TestLogic testObj = new TestLogic(); 

     string source = (string) TestContext.DataRow["source"]; // get the value from the 'source' column 
     string target = (string) TestContext.DataRow["target"]; // get the value from the 'target' column 

     Assert.IsTrue(testObj.VerifyFiles(source, target)); 
    } 

    public TestContext TestContext{ get; set; } 
} 

Badanie iterację rzędami DataSource i potrwa jeden raz dla każdego wiersza.

Aby uzyskać więcej informacji, sprawdź numer here.

+1

Tylko upewnij się, że plik .csv jest sprawdzany w źródle ... –

+0

Tak więc za pomocą tej metody będę musiał odczytać pliki z dwóch folderów, sparować je na podstawie ich identyfikatorów, a następnie zapisać sparowane nazwy plików w pliku CSV, który Czytałem przez przypadek testowy. Czy jest to bardziej bezpośrednia metoda? Jak bezpośrednie przekazywanie tablicy do DataSource? – Vijay

+0

W swoim pytaniu nie wspomniałeś nic o parowaniu. Wygląda na to, że są już sparowane. Tylko tablice łańcuchów (sugeruję ścieżki), więc moim rozwiązaniem było umieszczenie tych tablic (sparowanych ścieżek) w scv i odczytanie ich z tego miejsca. W ten sposób nie trzeba duplikować sprawy testowej i dodawać kolejnych powiązanych ścieżek bez zmiany kodu. Jeśli masz dodatkowe funkcje w teście, edytuj swoje pytanie. – Schaliasos

2

miałem podobny problem, a w końcu po zalecenie this blog post,

Użyliśmy szereg typów anonimowych przechowywać nasz zestaw warunków, a następnie stosuje się metodę LinQ w ForEach() pętli przez tablicę i uruchom test dla każdego elementu.

+0

Wygląda to tak samo, jak oryginalne rozwiązanie OP, którego próbuje uniknąć, np. "daje tylko jedno pojedyncze wyjście i zatrzymuje się, gdy jakakolwiek para plików wejściowych nie przejdzie testu" –

Powiązane problemy