Instalați VSCode

Configurați aici: https://code.visualstudio.com/docs/setup/setup-overview

Instalați și creați un proiect Maven

Ghid de instalare complet aici: https://maven.apache.org/guides/getting-started/maven-in-five-minutes.html

Dacă aveți instalat Maven, urmați acești pași:

Generați proiectul

mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DinteractiveMode=false

Schimbați în directorul de proiect

cd my-app

Construiește proiectul

mvn package

Testați și compilați proiectul

java -cp target/my-app-1.0-SNAPSHOT.jar com.mycompany.app.App

Ar trebui să obțineți o ieșire cu:Salut Lume!

Modificați proiectul nostru

Să începem să creăm funcții simple de matematică

Caută App.java fișier și înlocuiți conținutul cu acest cod:

package com.mycompany.app;

public class App 
{
  public static int add(int firstNumber, int secondNumber) {
    return firstNumber + secondNumber;
  }

  public static int multiply(int multiplicand, int multiplier) {
    return multiplicand * multiplier;
  }

  public static int divide(int dividend, int divisor) {
    if (divisor == 0)
      throw new IllegalArgumentException("Cannot divide by zero (0).");

    return dividend / divisor;
  }
  public static void main( String[] args )
  {
    System.out.println(App.add(3, 3)); 
  }
}

Caută AppTest.java și înlocuiți conținutul cu acest cod:

package com.mycompany.app;

import static org.junit.Assert.assertTrue;

import org.junit.Assert;
import org.junit.Test;

/**
 * Unit test for simple App.
 */
public class AppTest 
{
    /**
     * Rigorous Test :-)
     */
    @Test
    public void shouldAnswerWithTrue()
    {
        assertTrue( true );
    }
    @Test
    public void add_TwoPlusTwo_ReturnsFour() {
      // Arrange
      final int expected = 4;
  
      // Act
      final int actual = App.add(2, 2);
  
      // Assert
      Assert.assertEquals(expected, actual);
    }    
    @Test
    public void multiply_FourTimesTwo_ReturnsEight() {
      // Arrange
      final int expected = 8;
  
      // Act
      final int actual = App.multiply(4, 2);
  
      // Assert
      Assert.assertEquals(expected, actual);
    }        

    @Test
    public void divide_TenDividedTwo_ReturnsFive() {
      // Arrange
      final int expected = 5;
  
      // Act
      final int actual = App.divide(10, 2);
  
      // Assert
      Assert.assertEquals(expected, actual);
    }           
}

Puteți continua să creați teste precum:

@Test    
public void multiply_FiftyTimesTwo_ReturnsOneHundred() 
{      
  // Arrange      
  final int expected = 100;        
  // Act      
  final int actual = App.multiply(50, 2);        
  // Assert      
  Assert.assertEquals(actual, expected);    
}

Construiește proiectul

mvn package

Ieșire:

[INFO] -------------------------------------------------------
[INFO]  T E S T S
[INFO] -------------------------------------------------------
[INFO] Running com.mycompany.app.AppTest
[INFO] Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.026 s - in com.mycompany.app.AppTest
[INFO] 
[INFO] Results:
[INFO] 
[INFO] Tests run: 3, Failures: 0, Errors: 0, Skipped: 0

Testați și compilați proiectul

java -cp target/my-app-1.0-SNAPSHOT.jar com.mycompany.app.App

Ieșire:

6
Hello World!

O modalitate alternativă de a rula testele este prin clic Rulați testul interior AppTest.java

În exemplul de mai jos, Rulați testul este situat chiar sub linia de cod 44.

JUnit Test cu Maven in VSCode

Vizualizați testele și raportul de testare

1611453005 270 JUnit Test cu Maven in VSCode

Migrarea JUnit 4 la JUnit 5

Schimba-ti pom.xml dependențe de:

  <dependencies>
      <dependency>
          <groupId>org.junit.jupiter</groupId>
          <artifactId>junit-jupiter-api</artifactId>
          <version>5.4.2</version>
          <scope>test</scope>
      </dependency>
      <dependency>
          <groupId>org.junit.jupiter</groupId>
          <artifactId>junit-jupiter-engine</artifactId>
          <version>5.4.2</version>
          <scope>test</scope>
      </dependency>
  </dependencies>

Schimba-ti AppTest.java în:

package com.mycompany.app;

import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.junit.jupiter.api.Assertions.assertEquals;

import org.junit.jupiter.api.Test;

/**
 * Unit test for simple App.
 */
public class AppTest 
{
    /**
     * Rigorous Test :-)
     */
    @Test
    public void shouldAnswerWithTrue()
    {
        assertTrue( true );
    }
    @Test
    public void add_TwoPlusTwo_ReturnsFour() {
      // Arrange
      final int expected = 4;
  
      // Act
      final int actual = App.add(2, 2);
  
      // Assert
      assertEquals(expected, actual);
    }    
    @Test
    public void multiply_FourTimesTwo_ReturnsEight() {
      // Arrange
      final int expected = 8;
  
      // Act
      final int actual = App.multiply(4, 2);
  
      // Assert
      assertEquals(expected, actual);
    }        

    @Test
    public void divide_TenDividedTwo_ReturnsFive() {
      // Arrange
      final int expected = 5;
  
      // Act
      final int actual = App.divide(10, 2);
  
      // Assert
      assertEquals(expected, actual);
    }           
}

Adăugarea acoperirii testelor

Verificați raportul de acoperire a testului

În VSCode deschideți Extension MarketPlace și căutați jgheaburi de acoperire

1611453005 734 JUnit Test cu Maven in VSCode

Faceți clic pe butonul de instalare

Deschideți fișierul pom.xml sub folderul rădăcină și înlocuiți conținutul cu http://bit.ly/2Df1Oj2 pentru a adăuga un suport pentru plugin.

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  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.mycompany.app</groupId>
  <artifactId>my-app</artifactId>
  <version>1.0-SNAPSHOT</version>

  <name>my-app</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>
  </properties>

  <dependencies>
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-api</artifactId>
        <version>5.4.2</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
        <version>5.4.2</version>
        <scope>test</scope>
    </dependency>
  </dependencies>


  <build>
    <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
      <plugins>
        <plugin>
          <groupId>org.jacoco</groupId>
          <artifactId>jacoco-maven-plugin</artifactId>
          <version>0.8.2</version>
          <executions>
              <execution>
                  <goals>
                      <goal>prepare-agent</goal>
                  </goals>
              </execution>
              <execution>
                  <id>report</id>
                  <phase>prepare-package</phase>
                  <goals>
                      <goal>report</goal>
                  </goals>
              </execution>
          </executions>
        </plugin>
        <!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle -->
        <plugin>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.1.0</version>
        </plugin>
        <!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
        <plugin>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.8.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.22.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-jar-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-install-plugin</artifactId>
          <version>2.5.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>2.8.2</version>
        </plugin>
        <!-- site lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#site_Lifecycle -->
        <plugin>
          <artifactId>maven-site-plugin</artifactId>
          <version>3.7.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-project-info-reports-plugin</artifactId>
          <version>3.0.0</version>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
</project>

Deschideți terminalul în codul VSC și rulați

mvn install
mvn clean jacoco:prepare-agent install jacoco:report

Deschideți-vă App.java fișier sub main/java/com/mycompany/app folder și faceți clic pe butonul Urmăriți pentru a verifica raportul

1611453006 334 JUnit Test cu Maven in VSCode

Bara roșie: codul de test nu este acoperit

Bara galbenă: starea nu este acoperită

Bara verde: codul este acoperit

Deschide index.html fișier sub folderul rădăcină / țintă / site / jacoco.

A deschide:

Apoi lipiți (Ctrl și V pentru Windows, Command și V pentru MacOS) calea din browser.

1611453007 487 JUnit Test cu Maven in VSCode

Puteți vedea un raport foarte detaliat de acoperire a testelor:

1611453007 629 JUnit Test cu Maven in VSCode

Mulțumesc pentru lectură! =)

Doriți să aflați diferitele tipuri de testare software? https://medium.com/@clarkjasonngo/easy-examples-for-black-white-and-gray-box-testings-fdceb2a8b664Clark Jason Ngo – Asistent didactic absolvent – Institutul de tehnologie – Universitatea din Seattle | …
Vezi profilul lui Clark Jason Ngo pe LinkedIn, cea mai mare comunitate profesională din lume. Clark Jason are 9 locuri de muncă enumerate …www.linkedin.com

Contribuția secțiunii de acoperire a testului:Kevin Wang – Inginer software de tip Full Stack – Resonance Path Institute | LinkedIn
Înscrieți-vă pe LinkedIn Kevin este un masterand în informatică care iubește tehnologiile și programarea. Are o mare …www.linkedin.com