PowerMock вместе с TestFX4 приводят к тому, что тестирование никогда не завершается при выполнении безошибочно - PullRequest
0 голосов
/ 18 апреля 2019

Простой модульный тест выполняется бесконечно, когда запускается с уверенностью, вместо того, чтобы выполнять только Assert.assertTrue (true). Когда линия:

@RunWith(PowerMockRunner.class)

вместе с классом модульного тестирования, расширяющим ApplicationTest (TestFX)

public class JUnitFXTest extends ApplicationTest 

добавляются вместе к тесту!

Либо один работает просто отлично в одиночку, но при соединении тест запускается и никогда не заканчивается ...

Тот же тест проходит гладко с использованием поддержки Eclipse JUnit.

import org.junit.Assert;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.testfx.framework.junit.ApplicationTest;
import javafx.stage.Stage;
import org.powermock.modules.junit4.PowerMockRunner;

@RunWith(PowerMockRunner.class)
public class JUnitFXTest extends ApplicationTest 
{
    @Test
    public void test() {
        Assert.assertTrue(true);
    }

    @Override
    public void start(Stage arg0) throws Exception {

    }
}

Конфигурация плагина maven surefire:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <version>2.19</version>
  <configuration>
  <includes>
     <include>**/*Spec.*</include>
     <include>**/*Test.*</include>
  </includes>
</configuration>

зависимости powermock, mockito, junit, testfx maven:

<properties>    
    <junit.version>4.12</junit.version>
    <powermock.version>1.7.4</powermock.version>
    <testfx.version>4.0.15-alpha</testfx.version>
    <mockito.version>2.23.0</mockito.version>
</properties>
<dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>${junit.version}</version>
</dependency>
<dependency>
  <groupId>org.powermock</groupId>
  <artifactId>powermock-module-junit4</artifactId>
  <version>${powermock.version}</version>
</dependency>
<dependency>
  <groupId>org.powermock</groupId>
  <artifactId>powermock-core</artifactId>
  <version>${powermock.version}</version>
</dependency>
<dependency>
  <groupId>org.powermock</groupId>
  <artifactId>powermock-api-mockito2</artifactId>
  <version>${powermock.version}</version>
</dependency>
<dependency>
    <groupId>org.mockito</groupId>
    <artifactId>mockito-core</artifactId>
    <version>${mockito.version}</version>
</dependency>
<dependency>
    <groupId>org.testfx</groupId>
    <artifactId>testfx-core</artifactId>
    <version>${testfx.version}</version>
</dependency>
<dependency>
    <groupId>org.testfx</groupId>
    <artifactId>testfx-junit</artifactId>
    <version>${testfx.version}</version>
</dependency>

Это отредактированная версия фактического модульного теста для приложения JavaFX, но отредактированная версия показывает те же симптомы, что и полный тест. Хотя лучше учиться, скрывая сложность теста.

Ожидаемый результат при запуске:

mvn test

есть:

Running JUnitFXTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.061 sec - in JUnitFXTest

Вы можете получить этот результат, закомментировав расширений ApplicationTest или @RunWith (PowerMockRunner.class).

Когда оба расширяют ApplicationTest и @RunWith (PowerMockRunner.class) вместе в тесте

mvn test

застревает в

Running JUnitFXTest

навсегда ...

Я даже не знаю, как начать устранение проблемы, поэтому любые входные данные будут приветствоваться!

...