Ich bin neu in JUnit, und weiß nicht, welche Methoden Tests haben sollten und welche nicht. Nehmen Sie das folgende Beispiel:Für welche Methoden sollte ich JUnit testen - Wie man Methoden mit vielen Abhängigkeiten vortäuscht
public List<Site> getSites(String user)
{
SiteDao dao = new SiteDaoImpl();
List<Site> siteList = new ArrayList<Site>();
ServiceRequest rq = new ServiceRequest();
rq.setUser(user);
try
{
ServiceResponse response = siteDAO.getReponse(rq);
List<String> siteNums = response.getSiteNums();
if (siteNums != null && !siteNums.isEmpty())
{
List<DbModelSite> siteInfo = dao.getSiteInfo(siteNums);
if (siteInfo != null && !siteInfo.isEmpty())
{
siteList = SiteMapper.mapSites(siteInfo);
}
}
}
catch (Exception e)
{
e.printStackTrace();
}
return siteList;
}
public static List<Site> mapSites(List<DbModelSite> siteInfo)
{
List<Site> siteList = null;
if (siteInfo != null && !siteInfo.isEmpty())
{
siteList = new ArrayList<Site>();
for (DbModelSite temp : siteInfo)
{
Site currSite = mapSite(temp);
siteList.add(currSite);
}
}
return siteList;
}
public static Site mapSite(DbModelSite site)
{
Site mappedSite = null;
if (site != null)
{
mappedSite = new Site();
mappedSite.setSiteNum(site.getSiteNum());
mappedSite.setSpace(site.getSpace());
mappedSite.setIndicator("Y");
}
return mappedSite;
}
Es ziemlich trivial ist mit einem Unit-Test zu kommen sowohl für die mapSites()
und mapSite()
Methoden, aber wo ich Probleme mit dem getSites()
Verfahren. Ist es sinnvoll, diese Methode zu testen? Wenn ja, wie würde ich das tun? Es scheint, dass dies ziemlich viel Verspottung erfordern würde, und da ich für JUnit sehr neu bin, war ich nicht in der Lage herauszufinden, wie man all diese Objekte verspotten sollte.
Also meine Frage ist wirklich zweifach:
- Wie bestimmen Sie, ob eine Methode Einheit getestet werden muss?
- Wie testet eine Einheit eine komplexe Methode, die viel Spott verlangt?
Ja, es sollte auch Unit-getestet sein, idealerweise sollten mindestens alle "öffentlichen" Methoden Unit-getestet sein, da sie irgendwie den Vertrag Ihrer Anwendung definieren –