Как исключить все тестовые файлы, кроме двух, используя maven? - PullRequest
0 голосов
/ 31 мая 2019

Мне нравится делать что-то вроде ниже, что исключит все тестовые случаи, кроме двух тестовых файлов?

<plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-surefire-plugin</artifactId>
      <version>2.12.4</version>
      <configuration>
        <excludes>
            <exclude>**/*Test.java</exclude>
        </excludes>
        <includes>
            <include>path/to/Some1Test.java</include>
            <include>path/to/Some2Test.java</include>
        </includes>
      </configuration>
    </plugin>

Важный факт: тестовые файлы, которые я не хочу исключать, также имеют тот же шаблон именования, что и файлы, которые я хочу исключить. Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 01 июня 2019

Ниже приведено решение с примером:

package com.example1;
import org.junit.Test;
public class TestClass1 {
    @Test
    public void test1() {
    }
}


package com.example1;
import org.junit.Test;

public class TestClass2 {
    @Test
    public void test2() {
    }
}

package com.example2;
import org.junit.Test;
public class TestClass1 {
    @Test
    public void test1() {
    }
}

package com.example2;
import org.junit.Test;
public class TestClass2 {
    @Test
    public void test2() {
    }
}

Теперь приведена конфигурация подключаемого модуля безошибочного включения com.example1.TestClass1 и com.example1.TestClass2.Здесь не будут выполняться другие тестовые классы, кроме этих двух.

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.12.4</version>
                <configuration>
                    <includes>
                        <include>com/example1/TestClass1.java</include>
                        <include>com/example1/TestClass2.java</include>
                    </includes>
                </configuration>
            </plugin>
        </plugins>
    </build>
0 голосов
/ 31 мая 2019

excludes выигрывает includes для верной конфигурации плагина (не задокументировано, но работает таким образом).И это имеет смысл, поскольку excludes следует рассматривать как исключительный случай, а includes - как общий случай: вы хотите включить все, кроме .....

Но здесь вы хотите точнореверс.
Так что не смешивайте оба элемента, потому что с вашим фактическим conf:

  <configuration>
    <excludes>
        <exclude>**/*Test.java</exclude>
    </excludes>
    <includes>
        <include>path/to/Some1Test.java</include>
        <include>path/to/Some2Test.java</include>
    </includes>
  </configuration>

вы исключаете все, так как excludes исключает все здесь (<exclude>**/*Test.java</exclude>) и excludes выигрывает includes.

Все, что вам нужно, это определить includes только для выполнения только этих тестов:

  <configuration>      
    <includes>
        <include>path/to/Some1Test.java</include>
        <include>path/to/Some2Test.java</include>
    </includes>
  </configuration>
...