[JAVA] Résumé personnel des types souvent utilisés dans JUnit 4

introduction

[Introduction à JUnit Practice](https://www.amazon.co.jp/JUnit%E5%AE%9F%E8%B7%B5%E5%85%A5%E9%96%80-~%E4%BD% 93% E7% B3% BB% E7% 9A% 84% E3% 81% AB% E5% AD% A6% E3% 81% B6% E3% 83% A6% E3% 83% 8B% E3% 83% 83% E3% 83% 88% E3% 83% 86% E3% 82% B9% E3% 83% 88% E3% 81% AE% E6% 8A% 80% E6% B3% 95-WEB-PRESS-plus / dp / Si vous avez 477415377X), il n'y a rien de mal à cela, mais je ne l'ai souvent pas, donc je ne résumerai que ceux qui l'utilisent souvent.

De base

@Test
public void test1() {
	String actual = "hoge";
	String expected = "hoge";
	assertThat(actual, is(expected));
}

@Test
public void test2() {
	String actual = null;
	assertThat(actual, is(nullValue()));
}

@Before
public void setUp() throws Exception {
}

@After
public void tearDown() throws Exception {
}

@BeforeClass
public static void setUpBeforeClass() throws Exception {
}

@AfterClass
public static void tearDownAfterClass() throws Exception {
}

La méthode annotée avec «@ Test» est la méthode de test réelle. ʻAssertThat () compare la valeur attendue avec la valeur réelle. Dans l'exemple, ʻis () etnullValue ()sont utilisés, mais en plus,not ()est utilisé.

«@ Before» est exécuté avant que chaque méthode de «@ Test» ne soit exécutée, et «@ After» est exécuté après que chaque méthode de «@ Test» soit exécutée. S'il existe un processus commun à chaque test, tel que la connexion et la déconnexion au DB, vous pouvez l'écrire ici.

@ BeforeClass est exécuté une seule fois avant que toutes les méthodes @ Test soient exécutées, et @ AfterClass est exécuté une seule fois après que toutes les méthodes @ Test aient été exécutées. @ BeforeClass est utilisé lors de la sélection des paramètres de test dans les fichiers de propriétés. Je ne pense pas que j'utilise beaucoup @ AfterClass ...

Dans l'exemple, rien n'est écrit comme @ Before, mais vous pouvez écrire un test ici avec ʻassertThat ()`. Vous pouvez également tester l'état avant et après chaque processus.

Lors de la division du test en plusieurs parties


@RunWith(Enclosed.class)
public class JUnitTest {

	public static class TestClass1 {
		@Before
		public void setUp() throws Exception {
			//Pré-traitement pour la classe d'essai 1
		}

		@After
		public void tearDown() throws Exception {
			//Post-traitement pour la classe d'essai 1
		}

		@Test
		public void test() {
			String actual = "hoge";
			String expected = "hoge";
			assertThat(actual, is(expected));
		}
	}
	
	public static class TestClass2 {
		@Before
		public void setUp() throws Exception {
			//Prétraitement pour la classe d'essai 2
		}

		@After
		public void tearDown() throws Exception {
			//Post-traitement pour la classe d'essai 2
		}

		@Test
		public void test() {
			String actual = "fuge";
			String expected = "fuge";
			assertThat(actual, is(expected));
		}
	}

}

Si le prétraitement est différent pour chaque test, ajoutez @RunWith (Enclosed.class) à la classe de test, puis créez une classe interne. Dans l'exemple, «TestClass1» et «TestClass2» peuvent exécuter différents prétraitements et post-traitements. C'est pratique, mais j'oublie comment écrire l'annotation @RunWith (Enclosed.class) à chaque fois.

Lors de la répétition de tests similaires


@RunWith(Theories.class)
public class JUnitTest {

	@DataPoints
	public static String[] actualValues = {"hoge", "fuge"};

	@Theory
	public void test(String actualValue) {
		int actual = actualValue.length();
		int expected = 4;
		assertThat(actual, is(expected));
	}

}

S'il existe plusieurs tests avec des formats d'entrée et de sortie similaires, il est préférable de les assembler dans une certaine mesure. Spécifiez @RunWith (Theories.class) pour la classe de test et @ Theory au lieu de @ Test pour la méthode de test. Si vous mettez l'entrée et la sortie du test dans un tableau de @ DataPoints et que vous spécifiez la valeur du type spécifié par @ DataPoints dans l'argument de la méthode de @ Theory, ce sera @ Theory. Lorsque la méthode est exécutée, le test est exécuté pour le nombre de tableaux de @ DataPoints.

Recommended Posts

Résumé personnel des types souvent utilisés dans JUnit 4
Développement personnel: Résumé des techniques utilisées dans le gasha du rire (grattage, Rails, Heroku)
[Github] Résumé des commandes fréquemment utilisées pendant le développement
Résumé des commandes fréquemment utilisées dans Rails et Docker
Obtenez le nom du scénario de test dans la classe de test JUnit
Gemme souvent utilisée dans les rails
Le cas où @Autowired n'a pas pu être utilisé dans JUnit5
Exemples de syntaxe couramment utilisés en Java
À propos des méthodes fréquemment utilisées dans la conception
Résumé de l'ORM "uroboroSQL" qui peut être utilisé dans le Java d'entreprise
Test API souvent utilisé dans AssertJ
Résumé des commandes Docker fréquemment utilisées
Mécanisme et caractéristiques de la classe d'implémentation Collection souvent utilisés en Java
Commandes fréquemment utilisées pour les opérations MySQL
Ordre de traitement dans le programme
Quelles sont les règles de JUnit?
Méthodes Ruby souvent utilisées dans Rails
Résumé des bibliothèques qui semblent souvent utilisées dans le développement récent d'Android (2019/11)
Erreur lors de la finalisation du membre de la classe Entity utilisé dans SpringWebFlux
Spécifiez le JAVA_HOME par défaut utilisé dans buildship
Obtenez le résultat de POST en Java
[Java] Résumé personnel des instructions conditionnelles (basique)
Résumé des classes racine dans différentes langues
Résumé des hachages et symboles dans Ruby
[Personnel] Mémorandum JUnit5 (travail en cours)
L'histoire de l'écriture de Java dans Emacs
Ecrire le mouvement de Rakefile dans le runbook
Si vous souhaitez satisfaire la couverture de test des méthodes privées dans JUnit
À propos de la signification des variables de type, E, T, etc. utilisées dans les génériques utilisés en Java
Résumé de la sélection des éléments dans Selenium
[Order method] Définit l'ordre des données dans Rails
[Ruby] Résumé des définitions de classe. Maîtrisez les bases.
L'histoire de la comparaison de chaînes de bas niveau en Java
[Java] Gestion des Java Beans dans la chaîne de méthodes
L'histoire de la fabrication d'un Othello ordinaire à Java
À propos de l'idée des classes anonymes en Java
[Java] Résumé personnel des classes et méthodes (basique)
Utilisez le JDK utilisé dans Android Studio dans le terminal
L'histoire de l'apprentissage de Java dans la première programmation
Résumé des nouvelles fonctionnalités ajoutées dans Deeplearning4J 1.0.0-beta4
Écraser le contenu de la configuration avec Spring-boot + JUnit5
Ressentez le passage du temps même à Java
Ordre des modificateurs utilisés dans Swift (voir SwiftLint)
Importer des fichiers de la même hiérarchie en Java
Résumé de ce que j'ai appris dans Spring Batch
[Note personnelle] Disposition des boutons créés avec javafx d'Eclipse (dans le cas de HBox / VBox)
Résumé de l'utilisation du jeu de proxy dans IE lors de la connexion avec Java