Я пишу RESTful API, и, поскольку многие объекты в моей базе данных имеют похожее поведение, мне удалось написать обобщенный c класс тестового примера, который должен быть разделен на подклассы путем указания универсального c типа параметра для каждого подкласса. :
class CrudEntityTests<Entity>: XCTestCase where Entity: Content, Entity: MySQLModel {
...
createEntityTest() throws { ... }
editEntityTest() throws { ... }
noEntityTest() throws { ... }
fetchEntitiesTest() throws { ... }
deleteEntityTest() throws { ... }
creationPerformanceTest() throws { ... }
}
Тогда любой подкласс CrudEntityTest должен указывать конкретный тип. Например:
class PostTests: CrudEntityTests<Post> {
...
testCreatePost() throws {
try super.createEntityTest()
}
// Etcetera...
}
Теперь проблема в том, что если я это сделаю, то xCode не распознает такой класс, как PostTests, как часть классов для тестирования. Если я запускаю тесты вручную, нажимая галочку рядом с именем класса в xCode, они запускаются. Но если я попытаюсь сделать тестовую сборку с помощью xCode, нажав ⌘ + U, все тесты, которые подкласс CrudEntityTests, не будут запущены. Кроме того, эти тесты не запускаются с помощью команды xcodebuild. Для ясности, если я изменю PostTests таким образом, чтобы он не наследовал CrudEntityTests, но это был прямой суперкласс XCTestCase, тогда тесты запускаются с помощью xcodebuild и нажатием ⌘ + U. Кто-нибудь знает, как решить эту проблему?