Как делают меня объекты наследования модульного теста?

Вот адаптация Swift 3 ответа Кабреры :

let bundle = Bundle.main
        let path = bundle.path(forResource: "GoogleService-Info", ofType: "plist")!
        let options = FIROptions.init(contentsOfFile: path)
        FIRApp.configure(withName: "Secondary", options: options!)
        let secondary_app = FIRApp.init(named: "Secondary")
        let second_auth = FIRAuth(app : secondary_app!)
        second_auth?.createUser(withEmail: self.username.text!, password: self.password.text!)
        {
            (user,error) in
            print(user!.email!)
            print(FIRAuth.auth()?.currentUser?.email ?? "default")
        }

5
задан Community 23 May 2017 в 12:02
поделиться

5 ответов

Используйте комплект модульных тестов, который зеркально отражает иерархию классов. Если Вы имеете Основу базового класса и Полученный производный класс, то имеете тестовые классы BaseTests и полученный из того DerivedTests. BaseTests ответственен за тестирование всего определенного в Основе. DerivedTests наследовал те тесты и также ответственен за тестирование всего в Полученном.

Если Вы хотите протестировать защищенные виртуальные методы в Основе (т.е. интерфейс между Основой и ее происходящими классами), может также иметь смысл делать производный класс только для теста, который тестирует тот интерфейс.

5
ответ дан 18 December 2019 в 14:54
поделиться

Пока Вы не переопределяете открытые методы родительского класса, я не вижу, почему необходимо протестировать их на всех подклассах его. Модульный тест методы на родительском классе и тест только новые методы или переопределенные на подклассах.

4
ответ дан 18 December 2019 в 14:54
поделиться

Почему необходимо дразнить базовый класс?

Как можно создать производные классы из несуществующего родительского класса?

Просто протестируйте его, как обычно, но имейте родительский класс.

Я думаю, что Вы не рассказали целую историю.

Кроме того, функции языка, предположительно, работают (если Вы не работаете с бета-версиями или так), таким образом, Вы не должны тестировать, если метод на самом деле существует в производном классе.

1
ответ дан 18 December 2019 в 14:54
поделиться

Причина Вы используете фиктивные объекты в составе, состоит в том, если реальные объекты делают что-то, что Вы не хотите настраивать (как сокеты использования, последовательные порты, получать ввод данных пользователем, получать большие данные и т.д.). Необходимо всегда использовать реальные объекты, если это возможно. Фиктивные объекты только для того, когда предполагаемое усилие реализовать и поддержать тест с помощью реального объекта больше, чем это реализовать и поддержать тест с помощью фиктивного объекта. Ваш базовый класс ничего не должен делать воображение как этот!

Таким образом, Вы не должны тестировать наследование. По-видимому, Вы используете поведение базового класса, так просто тестируете производный класс, как Вы обычно были бы - вызывающие методы и для основы и для производного класса как подходящий для теста. Это гарантирует, что все намеченное поведение производного класса тестируется.

По существу (большую часть времени) Вы тестируете производный класс, как будто базовый класс невидим.

3
ответ дан 18 December 2019 в 14:54
поделиться

Нет, Вы не делаете. Просто необходимо проверить, что переопределенные методы делают то, что они должны. Это никоим образом не должно влиять на поведение Ваших родительских методов. Если Ваши родительские методы начинают перестать работать, то это означает пропавших без вести связанных условий при тестировании их на родительском уровне.

0
ответ дан 18 December 2019 в 14:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: