Результаты поиска
Почему я не могу использовать блок try вокруг моего вызова super()?
Итак, в Java первая строка вашего конструктора HAS должна быть вызовом super... будь то неявный вызов super() или явный вызов другого конструктора. Вот что я хочу знать: почему я не могу поставить пробный блок вокруг этого?
Мой конкретный случай заключается в том, что у меня есть макет класса для теста. Конструктора по умолчанию нет, но я хочу, чтобы он упрощал чтение тестов. Я также хочу обернуть исключения, вызванные из конструктора, в RuntimeException.
Итак, то, что я хочу сделать, это эффективно:
public class MyClassMock extends MyClass {
public MyClassMock() {
try {
super(0);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
// Mocked methods
}
Но Java жалуется, что супер-это не первое утверждение.
Мой обходной путь:
public class MyClassMock extends MyClass {
public static MyClassMock construct() {
try {
return new MyClassMock();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
public MyClassMock() throws Exception {
super(0);
}
// Mocked methods
}
Является ли это лучшим обходным путем? Почему Java не позволяет мне сделать первое?
Моя лучшая догадка относительно "why" заключается в том, что Java не хочет, чтобы я имел сконструированный объект в потенциально противоречивом состоянии... однако, делая глумление, я не забочусь об этом. Кажется, я должен быть в состоянии сделать это выше... или, по крайней мере, я знаю, что вышесказанное безопасно для моего случая... или кажется, что так и должно быть в любом случае.
Я переопределяю все методы, которые я использую из тестируемого класса, поэтому нет никакого риска, что я использую неинициализированные переменные.
Какой самый лучший макет фреймворка для Java?
Каков наилучший фреймворк для создания макетов объектов в Java? Почему? Каковы плюсы и минусы каждого фреймворка?
Модульное тестирование IHttpModule
Как вы проводите модульный тест a HttpModule в asp.net, учитывая, что HttpApplication и HttpContext не реализуют интерфейс ?
Как я должен протестировать метод, который заполняет список из DataReader?
Поэтому я работаю над некоторым устаревшим кодом, который тяжело переносится на ручные операции с базой данных. Я стараюсь поддерживать здесь некое подобие качества,поэтому стараюсь делать все возможное.
Код, над которым я работаю, должен быть заполнен, скажем, a List<Foo> из A DataReader, который возвращает все поля, необходимые для функционирования Foo. Однако если я хочу проверить, что код фактически возвращает один элемент списка на одну строку базы данных, я пишу тестовый код, который выглядит примерно так:
Expect.Call(reader.Read()).Return(true);
Expect.Call(reader["foo_id"]).Return((long) 1);
// ....
Expect.Call(reader.Read()).Return(true);
Expect.Call(reader["foo_id"]).Return((long) 2);
// ....
Expect.Call(reader.Read()).Return(false);
Что тоже довольно утомительно и довольно легко нарушается.
Как я должен подходить к этому вопросу, чтобы результат не был огромным беспорядком хрупких тестов?
Кстати, в настоящее время я использую Rhino.Mocks для этого, но я могу изменить его, если результат будет достаточно убедительным. Просто пока альтернативой не является TypeMock, потому что их EULA было немного слишком страшно на мой вкус, когда я последний раз проверял.
Edit: я также в настоящее время ограничен C# 2.