Duplicate Assert
Definition:
This smell occurs when a test method tests for the same condition multiple times within the same test method. If the test method needs to test the same condition using different values, a new test method should be created. As a best practice, the name of the test method should be an indication of the test being performed. Possible situations that would give rise to this smell include (1) developers grouping multiple conditions to test a single method, (2) developers performing debugging activities, and (3) an accidental copy-paste of code
Code Example:
@Test
public void testXmlSanitizer() {
boolean valid = XmlSanitizer.isValid("Fritzbox");
assertEquals("Fritzbox is valid", true, valid);
System.out.println("Pure ASCII test - passed");
valid = XmlSanitizer.isValid("Fritz Box");
assertEquals("Spaces are valid", true, valid);
System.out.println("Spaces test - passed");
valid = XmlSanitizer.isValid("Frützbüx");
assertEquals("Frützbüx is invalid", false, valid);
System.out.println("No ASCII test - passed");
valid = XmlSanitizer.isValid("Fritz!box");
assertEquals("Exclamation mark is valid", true, valid);
System.out.println("Exclamation mark test - passed");
valid = XmlSanitizer.isValid("Fritz.box");
assertEquals("Exclamation mark is valid", true, valid);
System.out.println("Dot test - passed");
valid = XmlSanitizer.isValid("Fritz-box");
assertEquals("Minus is valid", true, valid);
System.out.println("Minus test - passed");
valid = XmlSanitizer.isValid("Fritz-box");
assertEquals("Minus is valid", true, valid);
System.out.println("Minus test - passed");
}
References:
Quality attributes
- Code Example
- Cause and Effect
- Frequency
- Refactoring
An Exploratory Study on the Refactoring of Unit Test Files in Android Applications
Analyzing Test Smells Refactoring from a Developers Perspective
Automatic Identification of High-Impact Bug Report by Product and Test Code Quality
Characterizing High-Quality Test Methods: A First Empirical Study
Characterizing High-Quality Test Methods: A First Empirical Study
Handling Test Smells in Python: Results from a Mixed-Method Study
On the Distribution of “Simple Stupid Bugs” in Unit Test Files: An Exploratory Study
On the diffusion of test smells and their relationship with test code quality of Java projects
On the distribution of test smells in open source Android applications: an exploratory study
On the test smells detection: an empirical study on the jnose test accuracy
RAIDE: a tool for Assertion Roulette and Duplicate Assert identification and refactoring
Refactoring Test Smells With JUnit 5: Why Should Developers Keep Up-to-Date?
The secret life of test smells-an empirical study on test smell evolution and maintenance
Understanding practitioners’ strategies to handle test smells: a multi-method study