Git Hub
коротко

Swift: Unit Test

30 ноября 2016, 23:06

Тесты

Правила написания тестов:

  1. Тестируем одно поведение (один тест тестирует одно поведение)

для того чтобы протестировать свои классы приложения нужно добавить в начало файла с тестами

@testable import PrjoectNameApp

где PrjoectNameApp — имя вашего iOS приложения/проекта

Памятка по методам

Всегда ошибка

XCTFail(@"always failed")

Равенство базовых типов

let primitive1:Int = 5
        let primitive2:Int = 5
        XCTAssertEqual(primitive1, primitive2)
}

Равенство с погрешностью базовых типов

let constOne:Float = 5.012
        let constTwo:Float = 5.014
        let accuracy:Float = 0.005
        XCTAssertEqualWithAccuracy(constOne, constTwo, accuracy: accuracy)

—-

Проверка на nil

id foo = nil;
    XCTAssertNil(foo, @"pointer:%p", foo);

—-

Проверка с задержкой по времени

XCTestExpectation *expectation = [self expectationWithDescription:@"block not call"];
    NSTimeInterval timeout = 1.0f;
    [expectation performSelector:@selector(fulfill)
                      withObject:nil
                      afterDelay:0.3f];
    [self waitForExpectationsWithTimeout:timeout
                                 handler:nil];

Тест асинхронного взаимодействия

func testNetModel(){
        var items:[Post] = []
        let expect = expectation(description: "Test net Model")
        let model = NetModel()
        model.npGetList({
            posts in
            items = posts
            expect.fulfill()
        })
        
        waitForExpectations(timeout: 4.0, handler: { error in
            if let error = error {
                XCTFail(error.localizedDescription)
            }
            
            let isLoaded:Bool = (items.count > 1)
            XCTAssertTrue(isLoaded)
            if isLoaded == false {
                print("posts: \(items)")
            }
            
        })
    }

—-

Поделиться
#iOS   Swift   Test
Популярное