mirror of
https://github.com/tiennm99/java-design-patterns.git
synced 2026-10-14 22:17:38 +00:00
translation: Added french documentation for several patterns (#2617)
* translate Abstract Document documentation in french * translate Abstract Document documentation in french for issue #2278 * french translation of abstract factory * French translation for active-object * translate Abstract Document documentation in french * translate Abstract Document documentation in french for issue #2278 * french translation of abstract factory * French translation for active-object * tranlate to french: acyclic-visitore, adapter, aggregator-microservice, ambassador, api-gateway, arrange-act-assert, async-method-invocation, balking, bridge.
This commit is contained in:
1 parent
4a315e7f4b
commit
87a774c9d6
12 files changed
+1981
No files matched your search
@@ -0,0 +1,140 @@
|
||||
---
|
||||
title: Arrange/Act/Assert
|
||||
category: Idiom
|
||||
language: fr
|
||||
tag:
|
||||
- Testing
|
||||
---
|
||||
|
||||
## Aussi connu sous le nom de
|
||||
|
||||
Given/When/Then
|
||||
|
||||
## Intention
|
||||
|
||||
Arrange/Act/Assert (AAA) est un pattron d'organisation des tests unitaires.
|
||||
Il décompose les tests en trois étapes claires et distinctes :
|
||||
|
||||
1. Arrange : éffectuer la configuration et l'initialisation requises pour le test.
|
||||
2. Act : éffectuer la ou les actions requises pour le test.
|
||||
3. Assert: Vérifier le(s) résultat(s) du test.
|
||||
|
||||
## Explication
|
||||
|
||||
Ce pattron présente plusieurs avantages importants. Il crée une séparation claire entre la mise en place d'un test d'un test,
|
||||
les opérations et les résultats. Cette structure rend le code plus facile à lire et à comprendre.
|
||||
Si vous placez les étapes dans l'ordre et que vous formatez votre code source pour les séparer, vous pouvez parcourir un test et comprendre rapidement ce qu'il fait.
|
||||
|
||||
Il impose également un certain degré de discipline lors de l'écriture des tests. Vous devez penser clairement les trois étapes de votre test.
|
||||
Il est plus naturel d'écrire les tests en même temps, puisque vous avez déjà un plan.
|
||||
|
||||
Exemple
|
||||
|
||||
> Pour écrire des tests unitaire clairs et compréhensibles.
|
||||
|
||||
En clair
|
||||
|
||||
> Arrange/Act/Assert est un pattron de conception de tests qui organise les tests en trois étapes pour une maintenance facile.
|
||||
|
||||
WikiWikiWeb dit
|
||||
|
||||
> Arrange/Act/Assert est un pattron pour organiser et formater un code dans les methodes de test unitaire.
|
||||
|
||||
**Exemple de programme**
|
||||
|
||||
Commençons par présenter notre classe `Cash` qui subira un test unitaire.
|
||||
|
||||
```java
|
||||
public class Cash {
|
||||
|
||||
private int amount;
|
||||
|
||||
Cash(int amount) {
|
||||
this.amount = amount;
|
||||
}
|
||||
|
||||
void plus(int addend) {
|
||||
amount += addend;
|
||||
}
|
||||
|
||||
boolean minus(int subtrahend) {
|
||||
if (amount >= subtrahend) {
|
||||
amount -= subtrahend;
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
int count() {
|
||||
return amount;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Ensuite, nous rédigeons nos tests unitaires suivant le pattron Arrange/Act/Assert.
|
||||
Notez les étapes clairement séparées pour chaque test unitaire.
|
||||
|
||||
```java
|
||||
class CashAAATest {
|
||||
|
||||
@Test
|
||||
void testPlus() {
|
||||
//Arrange
|
||||
var cash = new Cash(3);
|
||||
//Act
|
||||
cash.plus(4);
|
||||
//Assert
|
||||
assertEquals(7, cash.count());
|
||||
}
|
||||
|
||||
@Test
|
||||
void testMinus() {
|
||||
//Arrange
|
||||
var cash = new Cash(8);
|
||||
//Act
|
||||
var result = cash.minus(5);
|
||||
//Assert
|
||||
assertTrue(result);
|
||||
assertEquals(3, cash.count());
|
||||
}
|
||||
|
||||
@Test
|
||||
void testInsufficientMinus() {
|
||||
//Arrange
|
||||
var cash = new Cash(1);
|
||||
//Act
|
||||
var result = cash.minus(6);
|
||||
//Assert
|
||||
assertFalse(result);
|
||||
assertEquals(1, cash.count());
|
||||
}
|
||||
|
||||
@Test
|
||||
void testUpdate() {
|
||||
//Arrange
|
||||
var cash = new Cash(5);
|
||||
//Act
|
||||
cash.plus(6);
|
||||
var result = cash.minus(3);
|
||||
//Assert
|
||||
assertTrue(result);
|
||||
assertEquals(8, cash.count());
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Application
|
||||
|
||||
Le pattron Arrange/Act/Assert peut être utilisé lorsque :
|
||||
|
||||
* Vous avez besoin d'organiser vos tests unitaire pour qu'il soit facile à lire, maintenir et améliorer.
|
||||
|
||||
## Crédits
|
||||
|
||||
* [Arrange, Act, Assert: What is AAA Testing?](https://blog.ncrunch.net/post/arrange-act-assert-aaa-testing.aspx)
|
||||
* [Bill Wake: 3A – Arrange, Act, Assert](https://xp123.com/articles/3a-arrange-act-assert/)
|
||||
* [Martin Fowler: GivenWhenThen](https://martinfowler.com/bliki/GivenWhenThen.html)
|
||||
* [xUnit Test Patterns: Refactoring Test Code](https://www.amazon.com/gp/product/0131495054/ref=as_li_qf_asin_il_tl?ie=UTF8&tag=javadesignpat-20&creative=9325&linkCode=as2&creativeASIN=0131495054&linkId=99701e8f4af2f7e8dd50d720c9b63dbf)
|
||||
* [Unit Testing Principles, Practices, and Patterns](https://www.amazon.com/gp/product/1617296279/ref=as_li_qf_asin_il_tl?ie=UTF8&tag=javadesignpat-20&creative=9325&linkCode=as2&creativeASIN=1617296279&linkId=74c75cf22a63c3e4758ae08aa0a0cc35)
|
||||
* [Test Driven Development: By Example](https://www.amazon.com/gp/product/0321146530/ref=as_li_qf_asin_il_tl?ie=UTF8&tag=javadesignpat-20&creative=9325&linkCode=as2&creativeASIN=0321146530&linkId=5c63a93d8c1175b84ca5087472ef0e05)
|
||||
Reference in new issue
Block a user