9
votes

Hamcrest et Scalatest

J'ai trouvé HAMCREST commode à utiliser avec Junit . Maintenant, je vais utiliser scalatest . Je sais que je peux utiliser hamcrest mais je me demande si je devrais vraiment devrais . N'a-t-elle pas Scalatest fournir une fonctionnalité similaire? Y a-t-il une autre bibliothèque Scala à cette fin (correspondants)?

Les gens utilisent-ils HAMCREST avec SCALATEST ?


1 commentaires

Je ne peux pas parler pour cette question particulière, mais: dans mon expérience générale, je trouve que les bibliothèques Java visant à fournir une expressivité sont généralement évitées par des bibliothèques Scala (ou simplement par des caractéristiques de la langue Scala).


3 Réponses :


3
votes

Scalatest a bâti-in Correspondants . Nous utilisons aussi attente . Dans certains cas, il est plus concis et plus flexible que les correspondants (mais il utilise des macros, elle nécessite donc au moins 2,10 version de Scala).


0 commentaires

1
votes

Non, vous n'avez pas besoin de hachocrest avec ScalAtest. Il suffit de mélanger dans le dactmathatchers ou mustMatchers trait avec votre spécification. La différence entre doit et doit simplement utiliser que vous utilisez simplement au lieu de devrait dans assertions.

Exemple : xxx


0 commentaires

4
votes

Comme Michael a dit, vous pouvez utiliser Matchers de Scalatest . Assurez-vous simplement d'étendre Matchers Code> dans votre classe de test. Ils peuvent très bien remplacer les fonctionnalités du hamcrest, tirer des caractéristiques Scala et regarder plus naturellement à Scala pour moi.

Ici, vous pouvez comparer des correspondants HamCrest et Scalatest sur quelques exemples: P>

val x = "abc"
val y = 3
val list = new util.ArrayList(asList("x", "y", "z"))
val map = Map("k" -> "v")

// equality
assertThat(x, is("abc")) // Hamcrest
x shouldBe "abc"         // ScalaTest

// nullity
assertThat(x, is(notNullValue()))
x should not be null

// string matching
assertThat(x, startsWith("a"))
x should startWith("a")
x should fullyMatch regex "^a..$" // regex, no native support in Hamcrest AFAIK

// type check
assertThat("a", is(instanceOf[String](classOf[String])))
x shouldBe a [String]

// collection size
assertThat(list, hasSize(3))
list should have size 3

// collection contents
assertThat(list, contains("x", "y", "z"))
list should contain theSameElementsInOrderAs Seq("x", "y", "z")

// map contents
map should contain("k" -> "v") // no native support in Hamcrest

// combining matchers
assertThat(y, both(greaterThan(1)).and(not(lessThan(3))))
y should (be > (1) and not be <(3))


0 commentaires