Найдено результатов: 4

Почему я не могу использовать блок 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   exception   mocking   try-catch    

506   7   16:03, 1st July, 2020


Какой самый лучший макет фреймворка для Java?

Каков наилучший фреймворк для создания макетов объектов в Java? Почему? Каковы плюсы и минусы каждого фреймворка?

java   unit-testing   mocking    

479   14   10:43, 6th August, 2020


Модульное тестирование IHttpModule

Как вы проводите модульный тест a HttpModule в asp.net, учитывая, что HttpApplication и HttpContext не реализуют интерфейс ?

c#   asp.net   unit-testing   mocking    

491   3   04:10, 21st August, 2020


Как я должен протестировать метод, который заполняет список из 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.

c#   unit-testing   tdd   mocking    

473   6   03:56, 25th August, 2020