maxConcurrentOperationCount를 사용하는 NSOperationQueue에 대한 단위 테스트

Michał Ciuba

나는 일종의 래퍼 인 클래스가 NSOperationQueue있습니다. 블록을 사용하여 네트워크 요청을 대기열에 넣을 수 있습니다. 현재 요청은 차례로 실행되지만 나중에 변경할 수 있습니다.

다음은 MyRequestsQueue 클래스의 코드입니다.

@interface MyRequestsQueue ()

@property(nonatomic, strong) NSOperationQueue* queue;

@end

@implementation MyRequestsQueue

-(instancetype)init
{
    self = [super init];
    if(!self) {
        return nil;
    }

    self.queue = [[NSOperationQueue new] autorelease];
    self.queue.maxConcurrentOperationCount = 1;

    return self;
}

-(void)addRequestBlock:(void (^)())request
{
    NSBlockOperation* operation = [NSBlockOperation blockOperationWithBlock:request];
    [self.queue addOperation:operation];
}

@end

일반적으로 XCTest를 사용하여 비동기 코드를 단위 테스트하는 방법을 알고 있습니다. 하지만 이제 MyRequestsQueue큐가 한 번에 하나의 작업 만 실행하는지 확인 하는 단위 테스트를 추가하고 싶습니다 . 또는 현재 실행중인 작업 수가보다 크지 않은지 테스트하는 것이 더 좋습니다 maxConcurrentOperationCount. operationCount속성 을 관찰하려고 self.queue했지만 문서에 의존해서는 안된다고 나와 있습니다. 어떻게 할 수 있습니까?

편집 : 내 테스트는 다음 패턴을 사용합니다.

@interface MessageRequestQueueTest : XCTestCase

@property(nonatomic, strong) MessageRequestsQueue* reuqestQueue;
@property(nonatomic, assign) NSInteger finishedRequestsCounter;

@end
// setUp method ommited - simply initializes self.requestQueue


-(void)testAddedRequestIsExecuted
{
    [self.reuqestQueue.queue setSuspended:YES];

    __weak __typeof(self) weakSelf = self;
    [self.reuqestQueue addRequestBlock:^{
        ++weakSelf.finishedRequestsCounter;
    } withName:kDummyRequestName];

    [self.reuqestQueue.queue setSuspended:NO];

    WAIT_WHILE(0 == self.finishedRequestsCounter, 0.1);
    XCTAssertEqual(self.finishedRequestsCounter, 1, @"request should be executed");
}

WAIT_WHILE 매크로는 AGAsyncTestHelper 입니다.

제임스 프로스트

나는 당신의 테스트 전략을 다시 생각하는 것이 좋습니다.

하지만 이제 큐가 한 번에 하나의 작업 만 실행하는지 확인하는 MyRequestsQueue에 대한 단위 테스트를 추가하고 싶습니다. 또는 더 나은 방법-현재 실행중인 작업 수가 maxConcurrentOperationCount보다 크지 않은지 테스트합니다.

이 두 테스트는 모두 Apple의 구현을 테스트 NSOperationQueue하는 것이며, 이는 아무것도 얻지 못할 것입니다. 자신이 소유하지 않은 단위 테스트 코드가되고 싶지는 않으며 일반적으로 Apple이 자체 코드를 올바르게 테스트했다고 가정해야합니다. NSOperationQueue동시 작업을 더 많이 실행 한다면 애플은 큰 문제가 될 것입니다!

대신에, 나는 단순히 초기화 됐어요 후, 당신이 있는지 테스트 할 MyRequestsQueue올바른 설정 한 maxConcurrentOperationCount자신에를 NSOperationQueue.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

URLSession 및 RxSwift를 사용하는 함수에 대한 단위 테스트 작성

분류에서Dev

$ state를 사용하여 컨트롤러에 대한 단위 테스트 시도

분류에서Dev

생성자에 CheckedProviders를 사용하여 클래스에 대한 단위 테스트를 작성하는 방법

분류에서Dev

Entity Framework를 사용한 단위 테스트에 대한 모범 사례

분류에서Dev

단위 테스트에서 WebAPI2를 사용하는 RequestContext.Principal에 대한 Autofac DI

분류에서Dev

정수 (osVersion)를 검색하는 범위에 대한 단위 테스트

분류에서Dev

Owin을 사용하는 WebApi에 대한 C # 단위 테스트 프로젝트

분류에서Dev

SonarQube 4.4가 spock 테스트를 사용하여 grails 2.4.3에 대한 cobertura 단위 테스트 또는 코드 커버리지를 표시하지 않음

분류에서Dev

diff 및 make를 사용하는 대신 Cabal을 사용하는 간단한 단위 테스트

분류에서Dev

HttpContext.Current.Server.MapPath에 대한 단위 테스트를 수행하는 방법

분류에서Dev

각도 ui-router에 대한 단위 테스트를 실행하는 방법

분류에서Dev

Javascript hasOwnProperty () 함수에 대한 단위 테스트를 추가하는 방법

분류에서Dev

Moq를 사용한 단위 테스트

분류에서Dev

Visual Studio 2012에서 Moq를 사용한 단위 테스트

분류에서Dev

grails 단위 테스트에서 VndErrorJsonRenderer를 사용하는 방법

분류에서Dev

SpringBoot에서 Hibernate를 사용하여 DAO 계층에 대한 단위 테스트 구성

분류에서Dev

JSDom을 사용하여 Jest에서 사용자 정의 요소에 대한 단위 테스트를 수행하는 방법

분류에서Dev

테스트중인 시스템에서 사용되는 동일한 상수를 단위 테스트에서 사용하는 것이 좋은 생각입니까?

분류에서Dev

jasmine과 함께 karma를 사용하여 로그인 방법에 대한 단위 테스트 작성

분류에서Dev

Python Telegram Bot에 대한 단위 테스트를 만드는 방법

분류에서Dev

Python 단위 테스트를 사용한 스칼라 테스트

분류에서Dev

unittest 및 pytest 패키지를 사용하여 작성된 테스트에 대한 단위 테스트 범위 보고서

분류에서Dev

래퍼를 사용하는 Azure Functions에 대한 단위 테스트를 작성하는 방법은 무엇입니까?

분류에서Dev

Mocks를 사용한 단위 테스트 Service Fabric 응용 프로그램에 대한 특정 질문

분류에서Dev

Angular 지시문에 대한 단위 테스트에서 클릭 이벤트를 트리거하는 방법

분류에서Dev

Rails를 사용한 단위 테스트에서 assert_response를 부정하는 방법

분류에서Dev

Gradle을 사용하는 Android에서 JUnit을 사용한 단위 테스트

분류에서Dev

Mockito를 사용한 Android 단위 테스트 : 모의에 대한 올바른 동작을 얻을 수 없음

분류에서Dev

단위 테스트에서 HttpClient를 사용한 후 올바르게 정리하는 방법

Related 관련 기사

  1. 1

    URLSession 및 RxSwift를 사용하는 함수에 대한 단위 테스트 작성

  2. 2

    $ state를 사용하여 컨트롤러에 대한 단위 테스트 시도

  3. 3

    생성자에 CheckedProviders를 사용하여 클래스에 대한 단위 테스트를 작성하는 방법

  4. 4

    Entity Framework를 사용한 단위 테스트에 대한 모범 사례

  5. 5

    단위 테스트에서 WebAPI2를 사용하는 RequestContext.Principal에 대한 Autofac DI

  6. 6

    정수 (osVersion)를 검색하는 범위에 대한 단위 테스트

  7. 7

    Owin을 사용하는 WebApi에 대한 C # 단위 테스트 프로젝트

  8. 8

    SonarQube 4.4가 spock 테스트를 사용하여 grails 2.4.3에 대한 cobertura 단위 테스트 또는 코드 커버리지를 표시하지 않음

  9. 9

    diff 및 make를 사용하는 대신 Cabal을 사용하는 간단한 단위 테스트

  10. 10

    HttpContext.Current.Server.MapPath에 대한 단위 테스트를 수행하는 방법

  11. 11

    각도 ui-router에 대한 단위 테스트를 실행하는 방법

  12. 12

    Javascript hasOwnProperty () 함수에 대한 단위 테스트를 추가하는 방법

  13. 13

    Moq를 사용한 단위 테스트

  14. 14

    Visual Studio 2012에서 Moq를 사용한 단위 테스트

  15. 15

    grails 단위 테스트에서 VndErrorJsonRenderer를 사용하는 방법

  16. 16

    SpringBoot에서 Hibernate를 사용하여 DAO 계층에 대한 단위 테스트 구성

  17. 17

    JSDom을 사용하여 Jest에서 사용자 정의 요소에 대한 단위 테스트를 수행하는 방법

  18. 18

    테스트중인 시스템에서 사용되는 동일한 상수를 단위 테스트에서 사용하는 것이 좋은 생각입니까?

  19. 19

    jasmine과 함께 karma를 사용하여 로그인 방법에 대한 단위 테스트 작성

  20. 20

    Python Telegram Bot에 대한 단위 테스트를 만드는 방법

  21. 21

    Python 단위 테스트를 사용한 스칼라 테스트

  22. 22

    unittest 및 pytest 패키지를 사용하여 작성된 테스트에 대한 단위 테스트 범위 보고서

  23. 23

    래퍼를 사용하는 Azure Functions에 대한 단위 테스트를 작성하는 방법은 무엇입니까?

  24. 24

    Mocks를 사용한 단위 테스트 Service Fabric 응용 프로그램에 대한 특정 질문

  25. 25

    Angular 지시문에 대한 단위 테스트에서 클릭 이벤트를 트리거하는 방법

  26. 26

    Rails를 사용한 단위 테스트에서 assert_response를 부정하는 방법

  27. 27

    Gradle을 사용하는 Android에서 JUnit을 사용한 단위 테스트

  28. 28

    Mockito를 사용한 Android 단위 테스트 : 모의에 대한 올바른 동작을 얻을 수 없음

  29. 29

    단위 테스트에서 HttpClient를 사용한 후 올바르게 정리하는 방법

뜨겁다태그

보관