J'ai une classe java - très typique du singleton habituel - comme ceci:Java singleton - Écrire un test unitaire pour la classe?
VEUILLEZ NOTER: J'ai omis la logique "if null" ici, par souci de concision, parce que ce n'est pas ce que je J'ai des problèmes avec, et je ne veux pas entasser la question.
public class MySingleton
{
ObjectMapper mapper;
private MySingleton()
{
new MySingleton(new ObjectMapper())
}
private MySingleton(ObjectMapper mapper)
{
this.mapper = mapper;
}
private static final class Lazy
{
static final MySingleton INSTANCE = new MySingleton();
}
public static MySingleton getInstance()
{
return Lazy.INSTANCE;
}
}
maintenant - ce qui est grand - et qui fonctionne - mais si je suis en train de tester cela dans un test unitaire ...
Je veux moquer cartographe - donc je peux faire:
ObjectMapper mockObjectMapper = mock(ObjectMapper.class)
Mais, quand je dois appeler en quelque sorte le constructeur de « MySingleton » afin de le tester ...
Comment puis-je faire cela - étant donné que de ma classe de test, je sais que cela va dire "MySingleton (arguments ici) a p rivaliser l'accès à MySingleton "?
Exactement quelles sont les exigences que vous essayez de tester? Je ne vois aucune logique dans l'une de ces méthodes qu'il serait logique de tester. Habituellement, essayer de tester des méthodes d'une ligne est une perte de temps complète. –
"J'ai omis la logique" if null "ici" Si vous utilisez l'idiot de paresseux, vous ne devriez pas avoir besoin de logique "if null". –
Regardez le framework PowerMock. – tsolakp