JTidy portage de Tidy en Java

Pour tester la validité des pages sur mes applications web dynamiques, j’utilise habituellement un plugin Firefox « HTML Validator » et je survole globalement le site en espérant avoir une belle coche verte partout. Il existe bien des outils de validation officiel comme celui du W3C, mais ils sont peu pratique pour des sites web dynamiques.

Récemment, j’ai tenté d’intégrer la validation des pages web à mes tests unitaires côtés présentation. Pour ces tests unitaire j’utilise les API java htmlUnit qui sont une extension de JUnit. Globalement, je veux une méthode qui teste que la page HTML reçue est valide. Pour effectuer cela, j’ai utilisé JTidy le portage en Java de HTML Tidy, un célèbre outil de validation des pages HTML et autres syntaxes proches (XHTML).

Le projet JTidy semble endormi, la dernière version date de 01/08/2001 et l’activité du site du projet (forum) est assez faible. La documentation manque. Malgré certaines inquiétudes le projet semble suffisant pour ajouter à mes tests unitaires côtés web une méthode assez grossière de contrôle validation du code HTML.

Donc voici le code que j’ai écrit dans le cadre de htmlunit fortement inspiré d’un exemple trouvé dans un blog :

private void checkWithJTidy(HtmlPage htmlPage) {
  //obtenir la page html sous forme tableau de byte
  String input=new String(htmlPage.getWebResponse().getResponseBody());
  
  //flux d'entree
  ByteArrayInputStream bais=new ByteArrayInputStream(input.getBytes());
  //flux de sortie
  ByteArrayOutputStream baos=new ByteArrayOutputStream();
  //flux d'erreur, c'est lui qui contient le résultat
  ByteArrayOutputStream baer=new ByteArrayOutputStream();
  	
  Tidy tidy=new Tidy();
  tidy.setXHTML(true);
  tidy.setOnlyErrors(true);
  tidy.setShowWarnings(true);
  //se mettre en mode non verbeux
  tidy.setQuiet(true);
  	
  PrintWriter pw=new PrintWriter(baer,true);
  tidy.setErrout(pw);
  tidy.parse(bais,baos);
  
  //assertion le flux baer doit être vide
  assertEquals(baer.toString(),baer.toString(),"");
}
Publicités

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s


%d blogueurs aiment cette page :