Eu tive o mesmo problema. A correção para mim pareceu aumentar o intervalo de tempo limite. Eu originalmente tive um intervalo de tempo limite de 1 e aumentou para 5 apenas para estar no lado seguro. Parece estar funcionando bem agora. Não tenho certeza de quanto tempo leva sua chamada assíncrona, ou se você pode pagar um intervalo de tempo limite maior do que 1, mas vale a pena disparar. Respondeu 24 de novembro às 20:14 tentei isso, em 50 casos ajudou. Você pode ver no código que postei que async é apenas dispatchafter que espera 0.5s. No final, estou nilhando a expectativa após o bloqueio de espera e fazendo tudo afirmando também após o bloco de espera. Então, nada acontece enquanto aguarda, mas cumpre. Ndash Micha Hernas 25 de novembro 14 às 11:18 Swift tem um problema especial para mostrar o ponto de quebra de exceção correto quando os fechamentos estão presentes no mesmo escopo. Eu vi o mesmo problema em um XCTestCase que usou dispatchafter e mesmo através do ponto de interrupção de exceção foi a mesma linha que waitForExpectationsWithTimeout, o caso de teste estava falhando devido a um downcast em um objeto nulo. Eu sei que este não é o seu caso, mas sempre que isso acontece, sugiro remover instruções uma linha por vez e executar o teste após cada remoção. Se o teste não falhar, você identificou o culpado. Desafortunadamente, esta é a melhor opção no momento da escrita quando Swift mostra um ponto de interrupção de exceção em uma linha que não faz sentido, especialmente a infame linha 0 de uma classe que você pode ver em ferramentas de relatório de falhas. Deixe-nos saber se você descobriu seu acidente. Eu tive pouco sucesso praticando o desenvolvimento orientado por teste com o código assíncrono Swift 2.0 no Xcode 7. As únicas soluções com as quais eu tive algum sucesso são mecanismos de atraso hackeados e artificiais que evitam a necessidade de WaitForExepectationsWithTimeout (). Gostaria de executar testes assíncronos da seguinte forma, mas este código falha consistentemente: Thread 1: EXCBADACCESS (code1, address0x6.) Quando a expectativa é cumprida (expectation. freefill ()) fora do fechamento assincronamente executado, esse teste passará como Esperado (desde que comente o cumprimento dentro do encerramento). Mas, obviamente, derrota a finalidade de sincronizar a avaliação do teste. Observarei que mesmo que o teste falhe, a mensagem Executada é impressa como seria de esperar. Além disso, se um ponto de interrupção for introduzido no waitForExpectationsWithTimeout. Linha, o teste sucede de forma semelhante, o teste é bem sucedido quando um atraso de sono artificial é introduzido. Isso me leva a acreditar que waitForExepectaionsWithTimeout () não está aguardando. É certo que eu sou novo no Xcode e Swift, então, se estou faltando alguma coisa óbvia, eu apreciaria muito os comentários. O que há de errado com o meu código acima Existem variáveis ambientais que posso fornecer para ajudar a depurar o problema. Executando: OS X El Capitan 10.11 Beta (15A263e), Xcode 7.0 beta (7A120f) perguntou 21 de agosto 15 às 20:06
No comments:
Post a Comment