Мавен туралы бәрі: мен жаттығуды жақсы көретін бастама . Кейде теория туралы жазу қаншалықты жалықтыратынын елестете алмайсыз. Дегенмен, сіз онсыз ешқайда бара алмайсыз. Тәжірибе, әрине, басқа мәселе. Енді мен бұрын сипаттаған пәрмендерді жылдам өтіп көрейік, және біз аяқтаймыз)
- Бірақ құрастыратын бірдеңе болуы үшін оны сол жерге қосу керек! Логикалық? - Иә капитан. 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 негізгі java ресурстары java ресурстарын сынау
src/main/java ішінде біз жұмыс істейтін пакетті жасаймыз. Оны дұрыс құрастыру үшін басына ұйымның атын ( groupId ), содан кейін жобаның атын қойған дұрыс болар еді. Біздің жағдайда бұл келесідей болады: com.github.javarushcommunity.mavendemo Маған келетін болсақ, бұл өте жақсы пакет. Онда біз ImageComparator сыныбын жасаймыз , ол үшін екі сынақ жазамыз.
Maven мен жобаны тұтастай IDEA-ға қосу
Идея біздің тәуелділіктерімізді танып, оларды жобада пайдалануды ұсына алу үшін біз бірнеше нәрсені істеуіміз керек:- Код көздерінің қайда болатынын және сынақтардың қайда болатынын айтыңыз.
- Идеяға maven жобасын қосыңыз.
- • 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. Идея мұны біледі және сіз оның мүмкіндіктерін пайдалана аласыз. Ол үшін файлдың өзінде сынып атауын нұқыңыз және пайда болған шамда тест жасау пәрменін таңдаңыз: Бізден болашақ сынақ үшін параметрлерді таңдау сұралады. Біз ештеңе орнатпаймыз, жай ғана OK түймесін басыңыз: Сынақ үшін біз сынақ суреттерінен суретті салыстырып, оларды сынақ ресурстарына (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 ашыңыз : Енді компиляция түймесін басып , не болғанын көріңіз: Бұдан біз екі қорытынды жасай аламыз:- Біздің дереккөздер жинақталып, көрсетілген жолға орналастырылды.
- Пәрмен сәтті орындалды - ЖЕТІСТІК ҚҰРУ.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.2</version>
</plugin>
Оны жобаға қосып, нұсқаны мүмкіндігінше <properties/> ішіне қойып, сынақты қайта бастаймыз : Енді бұл басқа мәселе! Екі сынақ сәтті өтті. Өрт! Енді біз пакетімізді іске қосамыз және мақсатты қалтадан жарникті табамыз деп күтеміз : Яғни, біз сынақтардан өткенін қайтадан көреміз, содан кейін (жобадағы бәрі жақсы екеніне кепілдік береді) біз жобаны жинай аламыз. мұрағат. Сурет maven іске қосу журналдарында және жоба құрылымында мұрағат бар екенін көрсетеді. Әрі қарай біз орнатуға кірісеміз . Тамаша команда. О, мен ұмытпас бұрын. Жобаны таза іске қосу арқылы жаңа пәрменді орындау алдында тазалау жақсы тәжірибе болып саналады . Бұл сізді болашақта бос сөзден құтқарады - мен өз тәжірибемнен кепілдік беремін))) Сондықтан, алдымен біз таза жұмыс істейміз , содан кейін орнатамыз : Көрсеткі қай жерде болса, сіз жергілікті репозиторийдің қай жерде орналасқанын анық көре аласыз. Олардың жазғандарына сүйене отырып, бұл менің жолым: /Users/roman_beskrovnyi/.m2 Ал мұрағаттың өзі осында орналасады: /Users/roman_beskrovnyi/.m2/repository/com/github/javarushcommunity/maven-demo/1.0- SNAPSHOT Егер біз терминалға барып, мұрағат орналасқан қалтаға кіруге тырыссақ, ол сонда болады: орналастыру бізге көрсетпейді, ал басқалары сізге қажет емес...
Пайдалы сілтемелер: |
---|
GO TO FULL VERSION