Lors de la publication d'un système Web, le projet sur lequel je travaille effectue les opérations suivantes:
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. .. ..
J'ai utilisé JUnit pour confirmer qu'il était correctement configuré.
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
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));
}
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));
}
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