EasyMock La Gestion Des Exceptions

Je suis la création de certains de test junit cas, l'aide d'EasyMock. Jusqu'à présent, il fait sens pour les classes, je m'attends au retour de Pojo, mais comment dois-je gérer affaire à un objet DAO que lui-même pouvait lever une exception. Mon cas de test est de vérifier à une exception levée lorsque le DAO rencontre un problème. À l'aide de EasyMock j'ai essayer et de se moquer de l'objet de DAO (test de la foo classe), ce qui est la bonne façon de gérer le niveau inférieur DAO exception.

Un exemple de classes/appels simples ci-dessous: (en Assumer toutes les getters/setters/constructeurs sont valides et présent)

public class foo{
    private daoClass dao = daoClass.getInstance();
    public String getValueFromDB(String key) throws DBException{
        return dao.lookup(key);
    }
}

public class daoClass{ //singleton DAO 
    public daoClass getInstance(){
       //singleton access here
    }
    public String lookup(String key) throws DBException{
        try{
            //DB LOGIC
        }
        catch(Exception e){
            throw new DBException(e.getMessage());
        }
    }
}

Quand je l'ai essayer et de tester la foo classe, je veux être en mesure de tester cette DBException. Comment dois-je faire, dois-je être environnant les DAO appel dans un try/catch (dans le test), ou ajouter un jette à l'épreuve? Je sais expected=DBException va passer le test s'est levée, mais comment syntaxiquement devrait vous gérer n'importe quel nombre d'exceptions internes?

Code de Test Exemple:

@Test(expected=DBException.class)
public void testFooError(){
    String key = "test";
    String value = "expected";
    daoClass daoMock = createMock(daoClass.class);
    try{
        expect(daoMock.lookup(key)).andReturn(value);
    } catch (DBException e){
        //???
    }
}

Quelle est la manière correcte de traiter lorsque le expect pourrait potentiellement générer des erreurs? Si la méthode d'essai throw l'exception, ou si un try/catch être utilisé? Est-il toujours correct d'utiliser le expected=EXCEPTION tag sur le test?

OriginalL'auteur Walls | 2013-03-01