Semua tentang Maven: awal saya suka berlatih. Anda bahkan tidak dapat membayangkan betapa membosankannya menulis tentang teori. Namun, Anda tidak bisa pergi kemana pun tanpa dia. Tentu saja, latihan adalah soal lain. Sekarang mari kita segera melalui perintah yang saya jelaskan sebelumnya, dan kita akan menyelesaikannya)
- Tetapi untuk dapat mengkompilasi sesuatu, itu perlu ditambahkan di sana! Logis? - Ya kapten. bgg Oleh karena itu, mari tambahkan kelas yang memiliki metode dan dua pengujian untuknya. Mari buat skema folder biasa untuk Maven:
Menyiapkan pom.xml
Saat kami berteori, kami mendapatkan pom.xml yang cukup bagus:Lihat kode
<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 sumber daya java utama menguji sumber daya java
Di src/main/java kita akan membuat paket tempat kita akan bekerja. Untuk menyusunnya dengan benar, sebaiknya cantumkan nama organisasi ( groupId ) di awal, lalu nama proyek. Dalam kasus kami akan menjadi seperti ini: com.github.javarushcommunity.mavendemo Bagi saya, ini adalah paket yang sangat bagus. Di dalamnya kita akan membuat kelas ImageComparator , yang mana kita akan menulis dua tes.
Menghubungkan Maven dan proyek secara keseluruhan ke IDEA
Agar ide tersebut dapat mengenali ketergantungan kita dan menawarkan untuk menggunakannya dalam proyek, kita perlu melakukan beberapa hal:- Sampaikan gagasan di mana sumber kode akan ditempatkan dan di mana pengujian akan dilakukan.
- Tambahkan proyek pakar ke dalam ide tersebut.
- • src/main/java - Sumber
- • src/main/resources - Sumber daya
- • src/test/java - Tes
- • src/test/resources - Sumber Daya Uji
- • target - Dikecualikan
Kami menulis sumber dan pengujian untuk “proyek” kami
Jadi, kita menambahkan Maven ke dalam idenya, sekarang mari kita jelaskan kelas yang akan bertindak sebagai sumber bagi kita:Pembanding Gambar:
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();
}
}
Mari buat tes untuk tujuan ini. Kelas yang diuji harus berada dalam paket yang sama, hanya di src/test/java. Idenya mengetahui hal ini, dan Anda dapat memanfaatkan kemampuannya. Untuk melakukannya, klik nama kelas di file itu sendiri dan pilih Buat tes pada bola lampu yang muncul: Kita akan diminta memilih pengaturan untuk tes selanjutnya. Kami tidak menginstal apa pun, cukup klik OK: Untuk pengujian kami, kami akan mengambil perbandingan gambar dari gambar pengujian dan menempatkannya di sumber daya pengujian (src/test/resource). Setelah ini kita akan menulis dua tes. Seseorang akan memeriksa apakah kedua gambar ini berbeda. Dan di sisi lain kita akan mengirimkan gambaran yang sama dan mengharapkan jawaban bahwa keduanya sama. Kemudian kita mendapatkan tes berikut:
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);
}
}
Tesnya sangat sederhana, saya tidak akan membahasnya. Jika Anda tertarik, saya akan menulis artikel tentang pengujian suatu hari nanti (tulis di komentar).
Jalankan perintah Maven
Sekarang, ketika semuanya sudah siap untuk melihat pekerjaan tim, pilih proyek kami di plugin Maven dan buka Lifecycle di dalamnya : Sekarang klik kompilasi dan lihat apa yang terjadi: Dari sini kita dapat menarik dua kesimpulan:- Sumber kami dikompilasi dan ditempatkan di jalur yang ditentukan.
- Perintahnya berhasil - BANGUN SUKSES.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.2</version>
</plugin>
Mari tambahkan ke proyek, masukkan versinya ke <properties/> sebaik mungkin dan mulai ulang pengujian : Sekarang masalahnya berbeda! Dua tes dijalankan dan berhasil. Api! Sekarang kita menjalankan paket kita dan berharap bahwa kita akan menemukan jarnik di folder target : Artinya, kita melihat lagi bahwa tes telah lulus, dan setelah ini (menjamin bahwa semua yang ada di proyek itu baik) kita dapat mengumpulkan proyek tersebut ke dalam sebuah arsip. Gambar tersebut menunjukkan bahwa ada arsip di log peluncuran maven dan struktur proyek. Selanjutnya kita telah menginstal . Tim hebat. Oh, sebelum aku lupa. Membersihkan proyek sebelum menjalankan perintah baru dianggap sebagai praktik yang baik dengan menjalankan clean . Ini akan menyelamatkan Anda dari omong kosong di masa depan - saya jamin dari pengalaman saya sendiri))) Oleh karena itu, pertama-tama kita jalankan clean , lalu instal : Di mana panahnya berada, Anda dapat dengan jelas melihat di mana repositori lokal berada. Berdasarkan apa yang mereka tulis, ini sedang dalam perjalanan: /Users/roman_beskrovnyi/.m2 Dan arsipnya sendiri akan berlokasi di sini: /Users/roman_beskrovnyi/.m2/repository/com/github/javarushcommunity/maven-demo/1.0- SNAPSHOT Dan jika kita pergi ke terminal dan mencoba masuk ke folder tempat arsip berada, maka arsip itu akan ada di sana: penerapan tidak akan menunjukkan kepada kita, dan Anda belum memerlukan yang lain...
Tautan yang berguna: |
---|
GO TO FULL VERSION