[JAVA] Ich habe ein Check-Tool für das Release-Modul erstellt

Hintergrund

Wenn Sie ein Websystem freigeben, führt das Projekt, an dem ich arbeite, Folgendes aus:

  1. Git führt den Inhalt des Entwicklungszweigs in den Release-Zweig ein
  2. Überprüfen Sie den Release-Zweig
  3. Vergewissern Sie sich, dass die Einstellungen für die Freigabe vorgenommen wurden.
  4. Erstellen Sie eine Kriegsdatei

Es gibt 10 bis 20 Elemente, um zu überprüfen, ob die Release-Einstellungen vorgenommen wurden. Zum Beispiel die folgenden Elemente.

Die Veröffentlichungshäufigkeit beträgt alle drei Monate, daher ist die Bestätigung selbst nicht so belastend. Da durch visuelle Bestätigung die Gefahr von Leckagen besteht, habe ich auch ein Werkzeug zum Lernen entwickelt. Nun, es ist möglich, dass das Tool falsch ist. .. ..

Inhalt des Werkzeugs

Verfassung

Ich habe JUnit verwendet, um zu bestätigen, dass es richtig eingestellt wurde.

Eigenschaftendatei

Laden Sie die Eigenschaftendatei mit der Klasse java.util.Properties

    /**Absoluter Pfad der zu lesenden Datei*/
    private static String filePath = Constants.PROJECT_PATH + "sources/system.properties";

    /**Objekt der Eigenschaftendatei*/
    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 Verbindungsziel des FTP-Servers bestätigen() throws Exception{
        String key = "ftp.host"; //Schlüsseldatei
        String actual = prop.getProperty(key); //
        String expected = "127.0.0.1"; //Erwartete Ergebnisse
        String name = relativeFilePath + ": " + key;
        log.info(name + " = " + actual); //Ausgabewert zum Protokollieren
        assertThat(name, actual, CoreMatchers.is(expected));
    }
      //Erstellen Sie so viele Testmethoden, wie Sie sehen möchten
 

JSP / HTML-Datei

Verwenden Sie org.jsoup.Jsoup, um die JSP / HTML-Datei zu laden. Es kann auch dann gelesen werden, wenn ein benutzerdefiniertes JSP-Tag vorhanden ist.

index.jsp


  <div>
    <span id="version">1.2.3</span>
  </div>
    /**Absoluter Pfad der zu lesenden Datei*/
    private static String filePath = Constants.PROJECT_PATH + "webapps/index.jsp";

    /**Dokumentobjekt*/
    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 Version überprüfen() 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));
    }

XML-Datei

Verwenden Sie "org.dom4j.io.SAXReader" in dom4j.jar, um die XML-Datei zu lesen.

Der folgende Prozess bestätigt die in web.xml beschriebene Version.

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>
	/**Absoluter Pfad der zu lesenden Datei*/
	private static String filePath = Constants.PROJECT_PATH + "webapps/WEB-INF/web.xml";

	/**XML-Datei Dokumentobjekt*/
	private static Document doc = null;

	@Rule
	public TestName testname = new TestName();

	@BeforeClass
	public static void setUpBeforeClass() throws Exception {
		SAXReader reader = new SAXReader();
        //Einstellung, externe DTD (Web) nicht zu lesen.Obwohl dtd in XML nicht referenziert wird, ist es so eingestellt, dass es von anderen XML-Dateien gelesen werden kann.)
        //http://qiita.com/yoshi389111/items/3d0da72b1f2ccd947052
		reader.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
		doc = reader.read(filePath);
	}

	@Test
Bestätigung der öffentlichen ungültigen Version() throws Exception {
		//<param-value>XPath, um den Wert des Tags zu erhalten
		String key = "//p:context-param/p:param-name[text()='version']/following-sibling::p:param-value";

		//Namensraum["p"]Setzen Sie den Standard-Namespace auf
		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));
	}

JavaScript-Datei

Verwenden Sie javax.script.ScriptEngine.

Sie können den Eigenschaftswert eines Objekts nicht mit der Methode "get" abrufen. Sobald eine js-Variable für jede "eval" -Methode zugewiesen wurde, ermitteln Sie den Wert dieser Variablen mit der "get" -Methode.

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"

Wenn Sie eine externe Bibliothek wie jQuery verwenden, tritt ein ReferenceError auf, wie unten gezeigt. Für die Freigabe der JavaScript-Datei ist es möglicherweise besser, keine externe Bibliothek zu verwenden. (Ich wusste nicht, wie ich den ReferenceError beheben sollte)

javax.script.ScriptException: ReferenceError: "$" is not defined in <eval> ...(Kürzung)

Recommended Posts

Ich habe ein Check-Tool für das Release-Modul erstellt
Ich habe ein Diff-Tool für Java-Dateien erstellt
Ich habe ein Tool zur Generierung von package.xml erstellt.
Ich habe eine Antwortfunktion für die Rails Tutorial-Erweiterung (Teil 1) erstellt.
Ich habe ein Plug-In für IntelliJ IDEA erstellt
Ich habe eine Antwortfunktion für die Rails Tutorial-Erweiterung (Teil 5) erstellt:
Ich habe ein neues Java-Bereitstellungstool erstellt
Ich habe ein Tool erstellt, um den Unterschied zwischen CSV-Dateien auszugeben
Ich habe eine Methode entwickelt, um nach Premium Friday zu fragen
Ich habe eine Bibliothek zum Anzeigen von Tutorials auf Android erstellt.
Ich habe eine Chat-App erstellt.
Ich habe JAX-RS ausprobiert und mir das Verfahren notiert
Ich habe eine Antwortfunktion für die Erweiterung Rails Tutorial (Teil 4) erstellt: Eine Funktion, die den Benutzer einzigartig macht
Ich habe eine shopify App @java erstellt
Als ich mit MPAndroidChart ein Balkendiagramm erstellt habe, war die Beschriftung der x-Achse aus irgendeinem Grund falsch ausgerichtet
Ich habe mit Swing eine GUI erstellt
Ich habe kürzlich eine JS-App in der gemunkelten Dart-Sprache erstellt
Ich habe ein Juwel gemacht, um den Text des Org-Modus in Qiita zu posten
Erstellt eine Methode zum Anfordern von Premium Friday (Java 8-Version)
Ich habe eine einfache Empfehlungsfunktion erstellt.
So überprüfen Sie den Inhalt der Java-Zeichenfolge mit fester Länge
Ich habe eine passende App erstellt (Android App)
[Android] Ich habe eine Schrittzähler-App erstellt.
Ich hatte Probleme bei der Arbeit und habe ein IntelliJ-Plug-In erstellt
Ich habe eine Antwortfunktion für die Rails Tutorial-Erweiterung (Teil 2) erstellt: Modell ändern
Überprüfen Sie die Notizen für die Klasse java.util.Scanner
[Ruby] Ich habe einen einfachen Ping-Client erstellt
Bereiten Sie die Sicherheitsüberprüfungsumgebung für Rails 6 vor
Ich habe eine Methode für den Premium-Freitag mit einem Liner erstellt
Überprüfen Sie die Notizen für die Klasse java.util.Optional
Ich habe mit Ruby einen riskanten Würfel gemacht
Ich habe eine Janken App mit Kotlin gemacht
Ich habe eine Taschenrechner-App für Android erstellt
Ein Überprüfungshinweis für die Klasse java.util.Objects
Ich habe eine Janken App mit Android gemacht
Überprüfen Sie die Notizen für das Paket java.time.temporal
Ich habe einen THETA API-Client erstellt, der für die Plug-Entwicklung verwendet werden kann
Ich war ein wenig süchtig nach dem S3-Prüfsummenvergleich, machen Sie sich also eine Notiz.
[Frage] Ich kann keine Lizenz für eine kommerzielle Paketanwendung vom Lizenzserver erhalten.
Ich habe eine einfache Grafikbibliothek für Smartphone-Apps erstellt [MP Android Chart Kai]
Ich suchte nach einem leichten Framework, das das plötzliche "schnell machen" beantworten würde.
[Ein Muss für junge Ingenieure] Eine Geschichte, die die Welt erweitert hat, als ich tatsächlich einen Webdienst betrieben habe, den ich selbst erstellt habe
Ich habe ein Programm zur Beurteilung von Primzahlen in Java erstellt
Überprüfen Sie die für den laufenden Java-Prozess festgelegten Optionen
04. Ich habe mit SpringBoot + Thymeleaf ein Frontend gemacht
Ich habe Mosaikkunst mit Pokemon-Bildern gemacht
Ich habe versucht, ein Personalmanagement-Tool zu entwickeln
Ich habe selbst eine App gemacht! (Leseverwaltungs-App)
Ich habe eine Android-App für den MiRm-Dienst erstellt
Ein Tool zum Schlagen von beliebigem SQL mit JDBC
Ich habe ein Janken-Spiel in Java (CLI) gemacht.
Ich habe eine Viewer-App erstellt, die PDF anzeigt