הכל על מייבן: ההתחלה שאני אוהב לתרגל. אתה אפילו לא יכול לדמיין כמה מייגע זה יכול להיות לפעמים לכתוב על תיאוריה. עם זאת, אתה לא יכול ללכת לשום מקום בלעדיה. תרגול זה עניין אחר, כמובן. עכשיו בואו נעבור במהירות על הפקודות שתיארתי בעבר, ונסתיים)
- אבל כדי שיהיה מה להדר צריך להוסיף אותו שם! הגיוני? כן קפטן. bgg לכן, בואו נוסיף מחלקה שתהיה לה שיטה ושני מבחנים עבורה. בואו ניצור סכימת תיקיות רגילה עבור Maven:
הגדרת pom.xml
בזמן שעסקנו בתיאוריות, קיבלנו pom.xml די טוב:צפה בקוד
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.github.javarushcommunity</groupId>
<artifactId>maven-demo</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>Maven Demo Project</name>
<url>https://github.com/javarushcommunity/maven-demo/</url>
<licenses>
<license>
<name>The Apache Software License, Version 2.0</name>
<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
</license>
</licenses>
<developers>
<developer>
<id>romankh3</id>
<name>Roman Beskrovnyi</name>
<email>roman.beskrovnyy@gmail.com</email>
</developer>
</developers>
<scm>
<connection>git@github.com:javarushcommunity/maven-demo.git</connection>
<developerConnection>git@github.com:javarushcommunity/maven-demo.git</developerConnection>
<url>https://github.com/javarushcommunity/maven-demo</url>
</scm>
<properties>
<mockito.version>2.26.0</mockito.version>
<junit.version>5.5.2</junit.version>
<image.comparison.version>4.3.0</image.comparison.version>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<javadoc.plugin.version>3.1.1</javadoc.plugin.version>
<source.plugin.version>3.2.0</source.plugin.version>
</properties>
<dependencies>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>${mockito.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.github.romankh3</groupId>
<artifactId>image-comparison</artifactId>
<version>${image.comparison.version}</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>${source.plugin.version}</version>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>${javadoc.plugin.version}</version>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
src משאבי ג'אווה ראשיים בדוק משאבי ג'אווה
ב- src/main/java ניצור חבילה בה נעבוד. כדי להרכיב אותו נכון, יהיה טוב לשים את שם הארגון ( groupId ) בהתחלה, ולאחר מכן את שם הפרויקט. במקרה שלנו זה יהיה כך: com.github.javarushcommunity.mavendemo מבחינתי, זו חבילה טובה מאוד. בו ניצור את המחלקה ImageComparator , עבורה נכתוב שני מבחנים.
חיבור מייבן והפרויקט כולו ל-IDEA
על מנת שהרעיון יוכל לזהות את התלות שלנו ולהציע להשתמש בהן בפרויקט, עלינו לעשות מספר דברים:- ספר לרעיון היכן יהיו מקורות הקוד והיכן יהיו הבדיקות.
- הוסף פרויקט מייבן לרעיון.
- • src/main/java - מקורות
- • src/main/resources - משאבים
- • src/test/java - בדיקות
- • src/test/resources - משאבי בדיקה
- • יעד - לא נכלל
אנו כותבים מקורות ומבחנים עבור ה"פרויקט" שלנו
אז, הוספנו את מייבן לרעיון, עכשיו בואו נתאר את הכיתה שתשמש לנו כמקורות:ImageComparator:
package com.github.javarushcommunity.mavendemo;
import com.github.romankh3.image.comparison.ImageComparison;
import com.github.romankh3.image.comparison.model.ImageComparisonResult;
import com.github.romankh3.image.comparison.model.ImageComparisonState;
import java.awt.image.BufferedImage;
/**
* Class created for answering, does two images the same or not.
*/
public class ImageComparator {
/**
* Method, which says the same images or not.
*
* @param image1 image1 for comparison
* @param image2 image2 for comparison
* @return return true, if images are the same, false - otherwise.
*/
public boolean isTheSameImages(BufferedImage image1, BufferedImage image2) {
//Create ImageComparison object
ImageComparison imageComparison = new ImageComparison(image1, image2);
//Compare images
ImageComparisonResult imageComparisonResult = imageComparison.compareImages();
//Check, that ImageComparisonState is MATCH:
return ImageComparisonState.MATCH == imageComparisonResult.getImageComparisonState();
}
}
בואו ניצור מבחנים למטרה זו. המחלקה הבודקת חייבת להיות באותה חבילה, רק ב-src/test/java. הרעיון יודע זאת, ואתה יכול לנצל את היכולות שלו. לשם כך יש ללחוץ על שם המחלקה בקובץ עצמו ולבחור באפשרות Create test על הנורה שמופיעה: נתבקש לבחור הגדרות למבחן העתידי. אנחנו לא מתקינים שום דבר, פשוט לחץ על אישור: לבדיקה שלנו, ניקח השוואת תמונות מתמונות הבדיקה ונכניס אותן למשאבי בדיקה (src/test/resource). לאחר מכן נכתוב שני מבחנים. אחד יבדוק ששתי התמונות הללו שונות. ובשני נעביר את אותה תמונה ונצפה לתשובה שהם זהים. אז נקבל את המבחן הבא:
package com.github.javarushcommunity.mavendemo;
import com.github.romankh3.image.comparison.ImageComparisonUtil;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import java.awt.image.BufferedImage;
@DisplayName("Unit-level testing for ImageComparator")
class ImageComparatorTest {
private final ImageComparator comparator = new ImageComparator();
@Test
public void shouldConfirmImagesNotTheSame() {
//given
BufferedImage image1 = ImageComparisonUtil.readImageFromResources("image1.png");
BufferedImage image2 = ImageComparisonUtil.readImageFromResources("image2.png");
//when
boolean theSameImages = comparator.isTheSameImages(image1, image2);
//then
Assertions.assertFalse(theSameImages);
}
@Test
public void shouldConfirmImagesTheSame() {
//given
BufferedImage image1 = ImageComparisonUtil.readImageFromResources("image1.png");
//when
boolean theSameImages = comparator.isTheSameImages(image1, image1);
//then
Assertions.assertTrue(theSameImages);
}
}
הבדיקות מאוד פשוטות, אני לא אתעכב עליהן. אם אתה מעוניין, אכתוב מאמר על בדיקות מתישהו (תכתוב על זה בתגובות).
בצע פקודות Maven
עכשיו, כשהכל מוכן לראות את עבודת הצוותים, בחר את הפרויקט שלנו בתוסף Maven ופתח בו את Lifecycle : כעת לחץ על קומפיל וראה מה קרה: מכאן נוכל להסיק שתי מסקנות:- המקורות שלנו נאספו והוצבו בנתיב שצוין.
- הפקודה הצליחה - BUILD SUCCESS.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.2</version>
</plugin>
בואו נוסיף אותו לפרויקט, נכניס את הגרסה ל- <properties/> כמיטב יכולתנו ונתחיל את הבדיקה מחדש : עכשיו זה עניין אחר! שני בדיקות רצו והצליחו. אֵשׁ! עכשיו אנחנו מפעילים את החבילה שלנו ומצפים שנמצא את הג'רניק בתיקיית היעד : כלומר, אנחנו רואים שוב שהבדיקות עברו, ואחרי זה (מבטיח שהכל בפרויקט טוב) נוכל לאסוף את הפרויקט לתוך ארכיון. האיור מראה שיש ארכיון ביומני ההשקה של מייבן ובמבנה הפרויקט. בשלב הבא יש לנו התקנה . קבוצה נהדרת. אה, לפני שאשכח. זה נחשב כתרגול טוב לנקות את הפרויקט לפני ביצוע פקודה חדשה על ידי הפעלת נקי . זה יחסוך ממך שטויות בעתיד - אני מבטיח את זה מניסיוני האישי))) לכן, קודם כל נריץ נקי , ולאחר מכן נתקין : היכן נמצא החץ, אתה יכול לראות בבירור היכן נמצא המאגר המקומי. על סמך מה שהם כותבים, זה בדרך שלי: /Users/roman_beskrovnyi/.m2 והארכיון עצמו ימוקם כאן: /Users/roman_beskrovnyi/.m2/repository/com/github/javarushcommunity/maven-demo/1.0- SNAPSHOT ואם נלך למסוף וננסה להיכנס לתיקיה שבה נמצא הארכיון, אז הוא יהיה שם: הפריסה לא תראה לנו, ואתה לא צריך את האחרים עדיין...
קישורים שימושיים: |
---|
GO TO FULL VERSION