Исключение Java не найдено ни одного теста при попытке Junit5 ParameterizedTest - PullRequest
0 голосов
/ 05 декабря 2018

ТАК Я пытаюсь использовать ParameterizedTest из JUnit5 и настроить pom для загрузки всего, и теперь у меня есть следующий тестовый класс.

    import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.Matchers.is;
import static org.hamcrest.Matchers.not;
import java.util.stream.Stream;
import org.junit.Test;
import org.junit.experimental.categories.Category;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.Arguments;
import org.junit.jupiter.params.provider.MethodSource;
import org.junit.platform.runner.JUnitPlatform;
import org.junit.runner.RunWith;
import com.tdameritrade.ctg.cashmovement.enums.transaction.TransactionProcessEnum;
import com.tdameritrade.ctg.cashmovement.enums.transaction.TransactionStatusEnum;
import com.tdameritrade.ctg.junit.categories.UnitTest;

/**
 * Test class for Posting Common Utils
 */
@RunWith(JUnitPlatform.class)
@Category(UnitTest.class)
public class PostingCommonUtilsTest {

    private static Stream<Arguments> dataSetForTransactionStatus() {
        return Stream.of(Arguments.of(TransactionStatusEnum.ERRORED.getName(), true),
                         Arguments.of(TransactionStatusEnum.COMPLETED.getName(), false));
    }

    /**
     * Test method for
     * {@link com.tdameritrade.ctg.cashmovement.posting.PostingCommonUtils#checkTransactionErrored(java.lang.String)}.
     */
    @ParameterizedTest
    @MethodSource("dataSetForTransactionStatus")
    public void testCheckTransactionErrored(final String status, final boolean result) throws Exception {
        assertThat(PostingCommonUtils.checkTransactionErrored(status), is(equalTo(result)));
    }
}

И я получаю следующую ошибку:

java.lang.Exception: No tests found matching [{ExactMatcher:fDisplayName=testCheckTransactionErrored], {ExactMatcher:fDisplayName=testCheckTransactionErrored(com.tdameritrade.ctg.cashmovement.posting.PostingCommonUtilsTest)], {LeadingIdentifierMatcher:fClassName=com.tdameritrade.ctg.cashmovement.posting.PostingCommonUtilsTest,fLeadingIdentifier=testCheckTransactionErrored]] from org.junit.internal.requests.ClassRequest@654f0d9c
    at org.junit.internal.requests.FilterRequest.getRunner(FilterRequest.java:40)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createFilteredTest(JUnit4TestLoader.java:77)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:68)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:43)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:444)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)

Возможно, я пропустил это, но я попытался найти эту ошибку, и все, что я нашел, указывает на то, что уже установлено.Например, в одной статье говорилось, что пом был не прав, но я делаю то же самое, что и они.

Вот мой pom.xmls:

РОДИТЕЛЬСКИЙ ПОМ:

<?xml version="1.0" encoding="UTF-8" standalone="no"?><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>
...  
      <properties>
...
        <junit.version>4.12</junit.version>
        <junit.platform.version>1.3.2</junit.platform.version>
        <junit.jupiter.version>5.3.2</junit.jupiter.version>
    </properties>

...
</project>

РЕБЕНОК ПОМ:

<?xml version="1.0" encoding="UTF-8" standalone="no"?><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>

    <parent>
        <groupId>com.tdameritrade.ctg</groupId>
        <artifactId>cashmovement-parent</artifactId>
        <version>1-SNAPSHOT</version>
        <relativePath>../cashmovement-parent</relativePath>
    </parent>

    <name>CTG Cash Movement Server</name>
    <groupId>com.tdameritrade.ctg</groupId>
    <artifactId>cashmovement-server</artifactId>
    <packaging>war</packaging>

    <dependencies>
...
        <dependency>
            <artifactId>junit-addons</artifactId>
            <groupId>junit-addons</groupId>
            <version>${junit-addons.version}</version>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>xerces</groupId>
                    <artifactId>xmlParserAPIs</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>xerces</groupId>
                    <artifactId>xercesImpl</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.junit.platform</groupId>
            <artifactId>junit-platform-runner</artifactId>
            <version>${junit.platform.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-api</artifactId>
            <version>${junit.jupiter.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-params</artifactId>
            <version>${junit.jupiter.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-engine</artifactId>
            <version>${junit.jupiter.version}</version>
            <scope>test</scope>
        </dependency>
...
        <plugins>
        <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>${maven-surefire-plugin.version}</version>
                <configuration>
                    <forkCount>${surefire.fork.count}</forkCount>
                    <reuseForks>${surefire.fork.reuse}</reuseForks>
                    <groups>${maven.surefire.include.groups}</groups>
                    <excludedGroups>${maven.surefire.exclude.groups}</excludedGroups>
                    <properties>
                        <includeTags>junit5</includeTags>
                    </properties>                    
                </configuration>
...
            </plugin>
        </plugins>
    </build>
</project>

Что не так?

Если я запускаю через командную строку, это трассировка стека ошибки:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.12.4:test (default-test) on project cashmovement-common: No tests were executed!  (Set -DfailIfNoTests=false to ignore this error.) -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.12.4:test (default-test) on project cashmovement-common: No tests were executed!  (Set -DfailIfNoTests=false to ignore this error.)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:213)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:154)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:146)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:51)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:309)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:194)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:107)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:955)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:290)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:194)
    at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:498)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:289)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:229)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:415)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:356)
Caused by: org.apache.maven.plugin.MojoFailureException: No tests were executed!  (Set -DfailIfNoTests=false to ignore this error.)
    at org.apache.maven.plugin.surefire.AbstractSurefireMojo.execute (AbstractSurefireMojo.java:579)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:134)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:208)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:154)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:146)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:51)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:309)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:194)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:107)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:955)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:290)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:194)
    at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:498)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:289)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:229)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:415)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:356)

Ответы [ 2 ]

0 голосов
/ 07 декабря 2018

Для JUnit5 вам нужно использовать @ExtendWith вместо @RunWith в вашем тестовом классе.

0 голосов
/ 05 декабря 2018

По вашей трассировке стека похоже, что вы пытаетесь запустить тест JUnit 5 с org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.Это вряд ли сработает, та же проблема , что и в ответе на этот вопрос .

Попробуйте запустить тест с использованием Maven из командной строки, как описано в Выполнение одиночного теста документы:

mvn -Dtest=PostingCommonUtilsTest test

Если тест выполняется успешно или вы видите точно такое же исключение, как в Eclipse, чем правильная настройка Eclipse, и это проблема с фреймворками.В противном случае ваши настройки Eclipse имеют недостатки и не поддерживают JUnit 5.

Это может быть проблема с версией Eclipse.Согласно официальной странице Embrace JUnit 5 с Eclipse :

Мы не поддерживаем выполнение тестов в установке, где старая сборка Eclipse (без поддержки JUnit 5) использует новуюСборка Eclipse (с поддержкой JUnit 5) в качестве цели.Кроме того, разработчики, у которых проверены пакеты времени выполнения JDT JUnit (org.eclipse.jdt.junit.runtime, org.eclipse.jdt.junit4.runtime) и получат последние изменения, столкнутся с вышеуказанной проблемой.Ожидается, что вы будете использовать новую сборку Eclipse для разработки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...