Я изучаю java и определяю лучший способ написания модульных тестов. У меня есть простая программа синтаксического анализа xml, в которой я ищу лучший способ написать тестовые примеры для класса SchemaValidator
, используя JUnit
и Mockito
. Ниже представлен класс
public class SchemaValidator {
private static final String SCHEMA_FILE = "/Schema.xsd";
private File xml;
public SchemaValidator(File xml) {
this.xml = xml;
}
/**
* Confirms if the schema is valid for the given xml file
*
* @return {@code true} if schema is valid
* {@code false} otherwise
*/
public boolean isValidSchema() {
try {
SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = factory.newSchema(new StreamSource(SchemaValidator.class.getResourceAsStream(SCHEMA_FILE)));
Validator validator = schema.newValidator();
validator.validate(new StreamSource(xml));
} catch (IOException | SAXException e) {
System.out.println("Exception: " + e.getMessage());
return false;
}
return true;
}
}
Как я могу протестировать этот класс? Должен ли я использовать фиктивные файлы xml (с действительными и недопустимыми схемами) локально для проверки поведения валидатора или это должно быть возможно с помощью имитации? Какая лучшая практика? Был бы признателен, если бы объяснил это с примерами тестовых случаев для вышеуказанного.