2009-12-04 2 views
1

J'essaie d'exécuter tous les tests unitaires en utilisant eunit dans un dossier, mais il semble que le délai d'attente soit toujours réinitialisé à 5 secondes.Eunit timeout ne fonctionne pas

par exemple.

Module:

-module(example). 
-include_lib("eunit/include/eunit.hrl"). 

main_test() -> 
    % sleep for 10 seconds 
    ?assertEqual(true, begin timer:sleep(10000), true end). 

Ligne de commande:

Eshell V5.7.3 (abort with ^G) 
1> c(example). 
{ok,example} 
2> eunit:test({timeout, 15, example}). 
    Test passed. 
ok 
3> eunit:test({timeout, 15, {dir, "."}}). 
example: main_test (module 'example')...*timed out* 
undefined 
======================================================= 
    Failed: 0. Skipped: 0. Passed: 0. 
One or more tests were cancelled. 
error 

Comme vous pouvez le voir, en cours d'exécution {timeout, 15, example} fonctionne mais pas {timeout, 15, {dir, "."}}. Est-ce que quelqu'un a une idée?

Répondre

5

Pour moi, cela a du sens: le délai d'expiration d'un répertoire entier n'est probablement pas lié aux délais d'attente pour les tests individuels.

Je voudrais écrire le test comme celui-ci:

main_test_() -> 
    % sleep for 10 seconds 
    {timeout, 15, ?_assertEqual(true, begin timer:sleep(10000), true end)}. 

(underscores ajouté pour créer une expression de test au lieu de l'essai lui-même, il est dans le eunit manual Je ne pense pas qu'il soit possible de spécifier un délai d'attente. dans le test lui-même de toute autre manière.)