Aller au contenu


Photo

[Résolu] Plantage dans une classe test

XCTestExpectation XCTest

  • Please log in to reply
4 réponses à ce sujet

#1 iLandes

iLandes

    Torréfacteur de fèves

  • Membre
  • PipPipPipPipPip
  • 821 messages
  • LocationLandes

Posté 09 janvier 2017 - 18:31

Bonjour, 

 

En executant la classe test ci-dessous j'ai ce message que je ne comprends pas. Le deuxième test passe sans problème. Voici un extrait de mon code.

func testLoginWithValidEmailAndPasswordPassword() {
        let e = expectation(description: "testLoginWithValidEmailAndPasswordPassword")
        // Test Valid email
        let u = User(email: k.validUserEmail)
        u.setPassword(k.validPassword)
        u.login(completion: {success, error in
            XCTAssertTrue(success)
            e.fulfill()
        })
        
        // Wait for the expectation to be fulfilled
        waitForExpectations(timeout: 10) { error in
            if let error = error {
                XCTFail("waitForExpectationsWithTimeout errored: \(error)")
            }
        }
    }
    
    func testLoginWithoutPassword() {
        let e = expectation(description: "testLoginWithoutPassword")
        // Test Valid email
        let u = User(email: k.validUserEmail)
        u.login(completion: {success, error in
            XCTAssertFalse(success)
            e.fulfill()
        })
        
        // Wait for the expectation to be fulfilled
        waitForExpectations(timeout: 10) { error in
            if let error = error {
                XCTFail("waitForExpectationsWithTimeout errored: \(error)")
            }
        }

        
    }

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'API violation - multiple calls made to -[XCTestExpectation fulfill] for testLoginWithValidEmailAndPasswordPassword..


--

seb@stien as iLandes

Linked In, Twitter, GitHub, StackOverFlowiLandes.fr

 

Applications : Plages.TVGirondins33Jardiner avec la luneDVRGVMidi Note Converter, FreeIMC.

 

It's not a bug, it's a feature.

Feature : A bug as described by the marketing department (Apple II Reference Manuel 1979 page 180)

 


#2 Céroce

Céroce

    Mouleur de chocolats

  • Contrôleur d'arômes
  • 5 206 messages
  • LocationSaint-Leu-d'Esserent / France

Posté 09 janvier 2017 - 18:35

Comme le message l'indique, on ne peut appeler expectation.fulfill() qu'une fois par expectation. Active un Exception Breakpoint pour voir où se fait le deuxième appel.
RenaudPradenc.com Je suis développeur iOS & Mac indépendant.

#3 iLandes

iLandes

    Torréfacteur de fèves

  • Membre
  • PipPipPipPipPip
  • 821 messages
  • LocationLandes

Posté 09 janvier 2017 - 21:27

Merci Céroce pour ta réponse

 

 Active un Exception Breakpoint pour voir où se fait le deuxième appel.

 

Comment on fait cela ?

 

Le truc que je ne comprend pas c'est que je lance mes test un par un avec la petite flèche sur la droite du code. Je n'ai pas mis le code mais j'ai 3 test dont le code est très similaire et seule la première ne marche pas.


--

seb@stien as iLandes

Linked In, Twitter, GitHub, StackOverFlowiLandes.fr

 

Applications : Plages.TVGirondins33Jardiner avec la luneDVRGVMidi Note Converter, FreeIMC.

 

It's not a bug, it's a feature.

Feature : A bug as described by the marketing department (Apple II Reference Manuel 1979 page 180)

 


#4 Céroce

Céroce

    Mouleur de chocolats

  • Contrôleur d'arômes
  • 5 206 messages
  • LocationSaint-Leu-d'Esserent / France

Posté 10 janvier 2017 - 08:55

Comment on fait cela ?

Xcode, sur la gauche, dans la rubrique Breakpoints.
Clique sur le + en bas à droite.
Ajoute un Exception Breakpoint.
 

Le truc que je ne comprend pas c'est que je lance mes test un par un avec la petite flèche sur la droite du code. Je n'ai pas mis le code mais j'ai 3 test dont le code est très similaire et seule la première ne marche pas.

Par exemple, il est possible que le bloc de completion soit appelé deux fois par ton code. Tu aurais donc bien un bug ;-)
  • iLandes aime ceci
RenaudPradenc.com Je suis développeur iOS & Mac indépendant.

#5 iLandes

iLandes

    Torréfacteur de fèves

  • Membre
  • PipPipPipPipPip
  • 821 messages
  • LocationLandes

Posté 12 janvier 2017 - 00:45

Par exemple, il est possible que le bloc de completion soit appelé deux fois par ton code. Tu aurais donc bien un bug ;-)

 

C'est exactement cela, un bug :]

Merci


--

seb@stien as iLandes

Linked In, Twitter, GitHub, StackOverFlowiLandes.fr

 

Applications : Plages.TVGirondins33Jardiner avec la luneDVRGVMidi Note Converter, FreeIMC.

 

It's not a bug, it's a feature.

Feature : A bug as described by the marketing department (Apple II Reference Manuel 1979 page 180)

 






Also tagged with one or more of these keywords: XCTestExpectation, XCTest

0 utilisateur(s) li(sen)t ce sujet

0 membre(s), 0 invité(s), 0 utilisateur(s) anonyme(s)