Industrieweiter Standard
-> jeweils alle Tests die mit @Test annotiert sind
@Test
public void sinnvollerName() throws Exception {
final Person person = new Person("Hans", "Muster");
final String fullname = person.getFullname();
Assert.assertEquals("Hans Muster", fullname);
}
@Test
public void getFullName_firstLastName_fullName() {
final Person person = new Person("Hans", "Muster");
final String fullname = person.getFullname();
Assert.assertEquals("Hans Muster", fullname);
}
Versuche die Berechnungslogik zu zerstören, ohne dass ein Test bricht.
public class GradePrinter {
public boolean isPassed(double grade) {
return grade <= 4.0;
}
public void gradePrinter(double grade) {
if (grade <= 4.0) {
System.out.println("Passed!");
}
if (grade == 1.0) {
System.out.println("CRAZY!");
}
System.out.println("Your grade is " + grade);
}
}
public String convertToUsFormat(Grade grade){
String internationalGrade = "";
if (grade.getValue() >= 1.0 && grade.getValue() < 1.7) {
internationalGrade = "A";
} else if (grade.getValue() >= 1.7 && grade.getValue() < 2.7) {
internationalGrade = "B";
} else if (grade.getValue() >= 2.7 && grade.getValue() < 3.7) {
internationalGrade = "C";
} else if (grade.getValue() >= 3.7 && grade.getValue() <= 4.0) {
internationalGrade = "D";
} else if (grade.getValue() > 4) {
internationalGrade = "F";
}
return internationalGrade;
}
"Dependency Injection is a 25-dollar term for a 5-cent concept."
James Shore
"Dependency injection means giving an object its instance variables. Really. That's it."
James Shore
public class SomeClass { private Dependency dependency; public SomeClass(Dependency dependency) { this.dependency = dependency; } }
Dependecy dependency = new Dependency(); SomeClass clazz = new SomeClass(dependency);
public class SomeClass { private Dependency dependency; public void setDependency(Dependency dependency) { this.dependency = dependency; } }
Dependecy dependency = new Dependency(); SomeClass clazz = new SomeClass(); clazz.setDependency(dependency);
public class SomeClass implements DepInjectable{ private Dependency dependency; @Override public void injectDep(Dependency dependency) { this.dependency = dependency; } } interface DepInjectable { void injectDep(Dependency dependency); }
Dependecy dependency = new Dependency(); SomeClass clazz = new SomeClass(); clazz.setDependency(dependency);
public class SomeClass { @Inject private Dependency dependency; }
public class SomeClass { private Dependency dependency; @Autowired public void setDependency(Dependency dependency) { this.dependency = dependency; } }
public interface FileReader { String read(File file); }
@Test public void importCustomerData() { FileReader reader = new FileReader() { @Override public String read(File file) { return null; } }; new CustomerImport(reader); // ... }
@Test
public void calculateShippingTime_productInStore() {
ProductService prService = new ProductService() {
@Override
public boolean isProductInStore() {
return true;
}
};
int days = new ShippingService(prService)
.getShippingTime();
assertEquals(2, days);
}
new EmailService() {
int callCount = 0;
String lastCallParam = null;
@Override
public void sendMail(String msg) {
this.callCount++;
this.lastCallParam = msg;
}
public int getCallCount() {
return this.callCount;
}
public String getLastCallParam() {
return this.lastCallParam;
}
};
@Test
public void email_withMockito() throws Exception {
EmailService emailServiceMock = Mockito
.mock(EmailService.class);
Mockito.when(emailServiceMock.sendMail("Text"))
.thenReturn("Antwort");
String resp = emailServiceMock.sendMail("Text");
Assert.assertEquals("Antwort", resp);
Mockito.verify(emailServiceMock, Mockito.times(1))
.sendMail("Text");
}