« LeSS - Tests unitaires » : différence entre les versions

De Wiki Agile
Ligne 168 : Ligne 168 :
Et lorsqu’un test unitaire échoue, il devrait nous fournir toutes les informations nécessaires. L’objectif est de limiter la durée pendant laquelle vous êtes occupés à débogguer le code concerné.
Et lorsqu’un test unitaire échoue, il devrait nous fournir toutes les informations nécessaires. L’objectif est de limiter la durée pendant laquelle vous êtes occupés à débogguer le code concerné.


=== Arranger, Agir, Auditer (Arrange, Act, Assert) ===
=== Arranger, Agir, Auditer (''Arrange'', ''Act'', ''Assert'') ===


A good pattern to follow in a unit test is “'''AAA'''”: '''Arrange''', '''Act''' and '''Assert'''.
A good pattern to follow in a unit test is “'''AAA'''”: '''Arrange''', '''Act''' and '''Assert'''.
Ligne 178 : Ligne 178 :
Si vous pouvez repérer ce schéma dans chacun de vos cas de tests, vos tests devraient facile à comprendre, et ils devraient s’avérer suffisamment spécifiques et aller droit au but. Un cas de test unitaire devrait tester une seule et unique chose. Par conséquent, il devrait y avoir un seul AAA dans un cas de test. Un cas de test ne devrait pas être très prolixe (c’est-à-dire plus de 10 lignes de code) s’il suit le schéma AAA.
Si vous pouvez repérer ce schéma dans chacun de vos cas de tests, vos tests devraient facile à comprendre, et ils devraient s’avérer suffisamment spécifiques et aller droit au but. Un cas de test unitaire devrait tester une seule et unique chose. Par conséquent, il devrait y avoir un seul AAA dans un cas de test. Un cas de test ne devrait pas être très prolixe (c’est-à-dire plus de 10 lignes de code) s’il suit le schéma AAA.


import unittest class TestGroupForTextWrapping(unittest.TestCase):
<pre>import unittest class TestGroupForTextWrapping(unittest.TestCase):


<pre>def test\_should\_have\_no\_wrapping\_when\_string\_length\_is\_5\_and\_line\_width\_is\_10(self):
def test\_pas\_de\_retour\_à\_la\_ligne\_lorsque\_longueur\_de\_la\_chaîne\_de\_caractères\_de\_5\_et\_largeur\_de\_la\_ligne\_de\_10(self):
    \# Arrange:  Arrange all necessary preconditions and inputs.
    wrapper = TextWrapper(width=10)
 
    \# Act:  Act on the object or method under test.
    wrapped = wrapper.wrap(&quot;a&quot; * 5)
 
    \# Assert:  Assert that the expected results have occurred.
    self.assertEqual(\[&quot;a&quot; * 5\], wrapped)</pre>
import unittest class TestGroupForTextWrapping(unittest.TestCase):
 
<pre>def test\_pas\_de\_retour\_à\_la\_ligne\_lorsque\_longueur\_de\_la\_chaîne\_de\_caractères\_de\_5\_et\_largeur\_de\_la\_ligne\_de\_10(self):
     \# Arrange :  Mettre en place toutes les préconditions nécessaires ainsi que les entrées.
     \# Arrange :  Mettre en place toutes les préconditions nécessaires ainsi que les entrées.
     wrapper = TextWrapper(width=10)
     wrapper = TextWrapper(width=10)