Frage

In TestNG und Java können wir mehrere Testfälle mit DataProvider ausführen. Dies wird als separate Tests ausgeführt. Dies bedeutet, dass die Ausführung eines Tests nicht beim Fehler gestoppt wird. Gibt es ein Analogon für Skalatest oder Spezifikationen/Spezifikationen2?

War es hilfreich?

Lösung

Sowohl in Scalatest als auch in Specs2 ist es einfach, bei der Laufzeit Testfälle zu erstellen, um sie mit Daten zu parametrisieren. Hier ist ein Beispiel mit Specs2:

   class BasketSpecification extends Specification {

     "a basket must contain fruits" >> {
       Seq(apple, banana, orange) foreach { fruit => 
         ("it contains: " + fruit) >> {
           basket must contain(fruit)
         }
       }
     }
   }

Dann ist die Ausgabe:

 A basket must contain fruits
 + it contains: apple
 + it contains: banana
 + it contains: orange

Während die folgende Spezifikation:

   class BasketSpecification extends Specification {

     "a basket must contain fruits" >> {
       Seq(apple, cake, orange) foreach { fruit => 
         ("it contains: " + fruit) >> {
           basket must contain(fruit)
         }
       }
     }
   }

Wird so etwas wie: ausdrucken:

 A basket must contain fruits
 + it contains: apple
 x it contains: cake
   'basket' does not contain 'cake'
 + it contains: orange

Andere Tipps

Dieses Konzept wird in Scalatest als "gemeinsam genutzte Tests" bezeichnet, da derselbe Testcode von mehreren Leuchten "freigegeben" wird, wobei "Feortures" die "Daten" im DataProvider -Ansatz von TestNG sind. Es gibt eine Möglichkeit, dies für jedes Stilmerkmal in Scalatest zu tun, das Tests als Funktionen ausdrückt. Hier ist ein Beispiel für WordSpec:

http://www.scalatest.org/scaladoc-1.6.1/#org.scalatest.wordspec@sharedtests

Sie können alternativ nur eine für Schleife verwenden, um denselben Testcode für verschiedene Datenpunkte zu registrieren. Dies kam in einer E -Mail -Diskussion auf, die hier ist:

http://groups.google.com/group/scalatest-users/browse_thread/thread/7337628407b48064#

Der für Schleifencode in diesem Fall sah aus:

  for (browser <- List("IE", "Chrome", "Firefox")) { 
    test(browser + ": test one") { driver => 
      info("Testing using " + driver) 
    } 
    test(browser + ": test two") { driver => 
      info("Testing using " + driver) 
    } 
    test(browser + ": test three") { driver => 
      info("Testing using " + driver) 
    } 
    test(browser + ": test four") { driver => 
      info("Testing using " + driver) 
    } 
    test(browser + ": test five") { driver => 
      info("Testing using " + driver) 
    } 
  } 
} 

Dies registriert tatsächlich 15 Tests, fünf Tests für jeden Browser -Treiber. Ich glaube, das ist das, was Sie suchen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top