Olá pessoal,
Estou em uma dúvida existencial … vou postar logo abaixo um código de um teste unitário pra ver o quanto vcs xingam :shock:
(minha dúvida é se é assim mesmo, vcs testam o comportamento esperado com entradas corretas e incorretas (incluindo exceções)? varios testes em um método test* mesmo? etc. etc. - comentários e links são bem vindos)
package app.vmanager;
import junit.framework.TestCase;
import app.vmanager.exception.InvalidVariableParameterException;
import app.vmanager.exception.MissingVariableParameterException;
import app.vmanager.exception.VariableException;
import app.vmanager.exception.VariableNotFoundException;
public class VariableManagerTest extends TestCase {
private static final String validConfig =
"<variable name=\"test\" type=\"sequence\" />";
private static final String invalidConfig =
"<variable name=\"test\" />";
private static final String invalidConfig_type =
"<variable name=\"test\" type=\"foo\" />";
private static final String invalidConfig_root =
"<foo name=\"test\" type=\"foo\" />";
private VariableManager vm;
public void setUp() throws VariableException {
vm = new VariableManager();
}
public void tearDown() {
vm = null;
System.gc();
}
public void testInvalidAddConfig() {
boolean failed = true;
try {
vm.addConfig(invalidConfig);
failed = false;
} catch (InvalidVariableParameterException e) {
assertTrue(false);
failed = false;
} catch (MissingVariableParameterException e) {
assertTrue(true);
} catch (VariableException e) {
assertTrue(false);
failed = false;
}
try {
vm.addConfig(invalidConfig_type);
failed = false;
} catch (InvalidVariableParameterException e) {
assertTrue(true);
} catch (MissingVariableParameterException e) {
assertTrue(false);
failed = false;
} catch (VariableException e) {
assertTrue(false);
failed = false;
}
try {
vm.addConfig(invalidConfig_root);
failed = false;
} catch (InvalidVariableParameterException e) {
assertTrue(false);
failed = false;
} catch (MissingVariableParameterException e) {
assertTrue(false);
failed = false;
} catch (VariableException e) {
assertTrue(true);
}
assertTrue(failed);
}
public void testValidAddConfig() {
try {
vm.addConfig(validConfig);
assertTrue(true);
} catch (InvalidVariableParameterException e1) {
assertTrue(false);
} catch (MissingVariableParameterException e1) {
assertTrue(false);
} catch (VariableException e) {
assertTrue(false);
}
}
public void testInvalidAddConfigBlock() {
try {
vm.addConfigBlock(
"<foo>" +
validConfig +
"</foo>");
assertTrue(false);
} catch (InvalidVariableParameterException e) {
assertTrue(false);
} catch (MissingVariableParameterException e) {
assertTrue(false);
} catch (VariableException e) {
assertTrue(true);
}
try {
vm.addConfigBlock(
"<variables>" +
invalidConfig +
"</variables>");
assertTrue(false);
} catch (InvalidVariableParameterException e) {
assertTrue(false);
} catch (MissingVariableParameterException e) {
assertTrue(true);
} catch (VariableException e) {
assertTrue(false);
}
try {
vm.addConfigBlock(
"<variables>" +
invalidConfig_type +
"</variables>");
assertTrue(false);
} catch (InvalidVariableParameterException e) {
assertTrue(true);
} catch (MissingVariableParameterException e) {
assertTrue(false);
} catch (VariableException e) {
assertTrue(false);
}
}
public void testValidAddConfigBlock() {
try {
vm.addConfigBlock(
"<variables>" +
validConfig +
"</variables>");
assertTrue(true);
} catch (InvalidVariableParameterException e) {
assertTrue(false);
} catch (MissingVariableParameterException e) {
assertTrue(false);
} catch (VariableException e) {
assertTrue(false);
}
}
public void testValidGetVariable() {
testValidAddConfig();
assertNotNull(vm.getVariable("test"));
}
public void testInvalidGetVariable() {
testInvalidAddConfig();
try {
vm.getVariable("test");
assertTrue(false);
} catch (VariableNotFoundException e) {
assertTrue(true);
}
}
public void testSaveAll() {
//TODO Implement saveAll().
}
}