[JAVA] J'ai créé un outil de vérification pour le module de version

Contexte

Lors de la publication d'un système Web, le projet sur lequel je travaille effectue les opérations suivantes:

  1. Git fusionne le contenu de la branche develop dans la branche release
  2. Consultez la branche Release
  3. Confirmez que les paramètres de libération ont été définis.
  4. Créez un fichier war

Il y a 10 à 20 éléments pour vérifier que les paramètres de version ont été définis. Par exemple, les éléments suivants.

La fréquence de publication est une fois tous les trois mois, donc la confirmation en elle-même n'est pas si lourde. Puisqu'il y a un risque de fuite par confirmation visuelle, j'ai également créé un outil d'étude. Eh bien, il est possible que l'outil se trompe. .. ..

Contenu de l'outil

Constitution

J'ai utilisé JUnit pour confirmer qu'il était correctement configuré.

fichier de propriétés

Chargez le fichier de propriétés à l'aide de la classe java.util.Properties

    /**Chemin absolu du fichier à lire*/
    private static String filePath = Constants.PROJECT_PATH + "sources/system.properties";

    /**Objet de fichier de propriété*/
    private static Properties prop = null;

    @Rule
    public TestName testname = new TestName();

    @BeforeClass
    public static void setUpBeforeClass() throws Exception {
        prop = new Properties();
        prop.load(new FileInputStream(filePath));
    }

    @Test
public void Confirmer la destination de connexion du serveur FTP() throws Exception{
        String key = "ftp.host"; //clé du fichier de propriétés
        String actual = prop.getProperty(key); //
        String expected = "127.0.0.1"; //Résultats attendus
        String name = relativeFilePath + ": " + key;
        log.info(name + " = " + actual); //Valeur de sortie à enregistrer
        assertThat(name, actual, CoreMatchers.is(expected));
    }
      //Créez autant de méthodes de test que vous le souhaitez
 

Fichier JSP / HTML

Utilisez org.jsoup.Jsoup pour charger le fichier JSP / HTML. Il peut être lu même s'il existe une balise personnalisée de JSP.

index.jsp


  <div>
    <span id="version">1.2.3</span>
  </div>
    /**Chemin absolu du fichier à lire*/
    private static String filePath = Constants.PROJECT_PATH + "webapps/index.jsp";

    /**objet de document*/
    private static Document doc = null;

    @Rule
    public TestName testname = new TestName();

    @BeforeClass
    public static void setUpBeforeClass() throws Exception {
        doc = Jsoup.parse(new File(filePath), "UTF-8");
    }

    @Test
public void Vérifier la version() throws Exception{
        String key = "#version";
        Element cell = doc.select(key).get(0);
        String actual = cell.text();
        String expected = "1.2.3";
        String name = relativeFilePath + " : " + key;
        log.info(name + " = " + actual);
        assertThat(name, actual, CoreMatchers.is(expected));
    }

Fichier XML

Utilisez ʻorg.dom4j.io.SAXReader` dans dom4j.jar pour lire le fichier XML.

Le processus suivant confirme la version décrite dans web.xml.

web.xml


<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
         version="2.4">
         
		  <context-param>
		    <param-name>version</param-name>
		    <param-value>1.2.3</param-value>
		  </context-param>
</web-apps>
	/**Chemin absolu du fichier à lire*/
	private static String filePath = Constants.PROJECT_PATH + "webapps/WEB-INF/web.xml";

	/**Objet de document de fichier XML*/
	private static Document doc = null;

	@Rule
	public TestName testname = new TestName();

	@BeforeClass
	public static void setUpBeforeClass() throws Exception {
		SAXReader reader = new SAXReader();
        //Réglage de ne pas lire la DTD externe (Web.Bien que dtd ne soit pas référencé dans xml, il est défini de manière à pouvoir être lu par un autre XML.)
        //http://qiita.com/yoshi389111/items/3d0da72b1f2ccd947052
		reader.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
		doc = reader.read(filePath);
	}

	@Test
Confirmation de la version publique nulle() throws Exception {
		//<param-value>XPath pour obtenir la valeur de la balise
		String key = "//p:context-param/p:param-name[text()='version']/following-sibling::p:param-value";

		//Espace de nom["p"]Définissez l'espace de noms par défaut sur
		BaseXPath xpath = new Dom4jXPath(key);
		xpath.addNamespace("p", ""http://java.sun.com/xml/ns/j2ee");

		String actual = xpath.stringValueOf(doc);
		String expected = "1.2.3";
		String name = relativeFilePath + " : " + key;
		log.info(name + " = " + actual);
		assertThat(name, actual, CoreMatchers.is(expected));
	}

Fichier JavaScript

Utilisez javax.script.ScriptEngine.

Vous ne pouvez pas obtenir la valeur de propriété d'un objet avec la méthode get. Une fois assignée à une autre variable js de la méthode ʻeval, récupérez la valeur de cette variable avec la méthode get`.

sample.js


var C = {version: "1.2.3"};
engine.eval(new FileReader("sample.js"));
Object a = engine.get("C.version"); //→null
engine.eval("tmp = C.version");
Object b = engine.get("tmp"); //→"1.2.3"

Si vous utilisez une bibliothèque externe telle que jQuery, une ReferenceError se produira comme indiqué ci-dessous. Pour que le fichier JavaScript soit publié, il peut être préférable de ne pas utiliser de bibliothèque externe. (Je ne savais pas comment résoudre le ReferenceError)

javax.script.ScriptException: ReferenceError: "$" is not defined in <eval> ...(réduction)

Recommended Posts

J'ai créé un outil de vérification pour le module de version
J'ai créé un outil Diff pour les fichiers Java
J'ai créé un outil de génération package.xml.
J'ai créé une fonction de réponse pour l'extension Rails Tutorial (Partie 1)
J'ai créé un plug-in pour IntelliJ IDEA
J'ai créé une fonction de réponse pour l'extension Rails Tutorial (Partie 5):
J'ai créé un nouvel outil de déploiement Java
J'ai créé un outil pour afficher la différence du fichier CSV
J'ai fait une méthode pour demander la prime vendredi
J'ai créé une bibliothèque pour afficher des tutoriels sur Android.
J'ai créé une application de chat.
J'ai essayé JAX-RS et pris note de la procédure
J'ai créé une fonction de réponse pour l'extension Rails Tutorial (Partie 4): une fonction qui rend l'utilisateur unique
J'ai créé une application shopify @java
Lorsque j'ai créé un graphique à barres avec MPAndroidChart, l'étiquette de l'axe des x était mal alignée pour une raison quelconque
J'ai créé une interface graphique avec Swing
J'ai récemment créé une application js dans le langage courant de Dart
J'ai fait un petit bijou pour poster le texte du mode org sur qiita
J'ai posé une question qui peut être utilisée pour des entretiens techniques
Création d'une méthode pour demander Premium Friday (version Java 8)
J'ai fait une simple fonction de recommandation.
Comment vérifier le contenu de la chaîne de caractères java de longueur fixe
J'ai créé une application correspondante (application Android)
[Android] J'ai créé une application de podomètre.
J'avais des problèmes au travail, j'ai donc créé un plug-in IntelliJ
J'ai créé une fonction de réponse pour l'extension Rails Tutorial (Partie 2): Changer de modèle
Consulter les notes de la classe java.util.Scanner
[Ruby] J'ai créé un simple client Ping
Préparer l'environnement de contrôle de sécurité pour Rails 6
J'ai fait une méthode pour le vendredi premium avec une doublure
Consultez les notes de la classe java.util.Optional
J'ai fait une mort risquée avec Ruby
J'ai créé une application Janken avec kotlin
J'ai créé une application de calculatrice sur Android
Une note de révision pour la classe java.util.Objects
J'ai créé une application Janken avec Android
Consulter les notes du package java.time.temporal
J'ai créé un client API THETA qui peut être utilisé pour le développement de plugins
J'étais un peu accro à la comparaison S3 Checksum, alors prenez note.
[Question] Je ne peux pas obtenir de licence pour une application de package commercial à partir du serveur de licences.
J'ai créé une bibliothèque de graphiques simple pour les applications de smartphone [MP Android Chart Kai]
J'ai recherché un framework léger qui répondrait au soudain "faites-le vite"
[Incontournable pour les ingénieurs débutants] Une histoire que le monde s'est étendue lorsque j'ai exploité un service Web que j'ai créé moi-même
J'ai créé un programme de jugement des nombres premiers en Java
Vérifiez les options définies pour le processus Java en cours d'exécution
04. J'ai fait un frontal avec SpringBoot + Thymeleaf
J'ai fait de l'art de la mosaïque avec des images Pokemon
J'ai essayé de développer un outil de gestion des effectifs
J'ai créé une application par moi-même! (Application de gestion de la lecture)
J'ai créé une application Android pour le service MiRm
Un outil pour frapper du SQL arbitraire en utilisant JDBC
J'ai créé un jeu Janken en Java (CLI)
J'ai créé une application de visualisation qui affiche le PDF