««« | »»»
JUnit 4.4: nuove possibilità
Anche se sono mesi che non apro Eclipse, le novità dell’ultima versione di JUnit sono benvenute. Ad es. adesso, al pari di altri frameworks – JMock, se non ricordo male – è possibile scrivere cose del tipo:
assertThat(x, is(3)); assertThat(x, is(not(4))); assertThat(responseString, either(containsString("color")) .or(containsString("colour"))); assertThat(myList, hasItem("3"));
Altra aggiunta utile e, soprattutto, che può cambiare l’approccio ad alcuni scenari di test è la possibilità di esplicitare gli assunti ritenuti validi durante lo sviluppo:
assertThat(x, is(3)); @Test public void filenameIncludesUsername() { assumeThat(File.separatorChar, is('/')); assertThat(new User("optimus").configFileName(), is("configfiles/optimus.cfg")); }
Ad oggi questi assunti non fanno fallire il test se si rivelano falsi.
Per estensione sono state introdotte le teorie. Ad es:
assertThat(x, is(3)); @RunWith(Theories.class) public class UserTest { @DataPoint public static String GOOD_USERNAME = "optimus"; @DataPoint public static String USERNAME_WITH_SLASH = "optimus/prime"; @Theory public void filenameIncludesUsername(String username) { assumeThat(username, not(containsString("/"))); assertThat(new User(username).configFileName(), containsString(username)); } }
La teoria espressa da filenameIncludesUsername viene verificata per ogni @DataPoint e il test fallisce se, per un @DataPoint che conferma l’assunto, l’asserzione è falsa.
Grazie ai data point è ora possibile scrivere test su insiemi in maniera più naturale; TestNG rimane ancora avanti in questo settore ma la distanza si è accorciata.
Per proseguire
Commenti e trackback sono disabilitati.