Scalatest maven plugin: ERROR: -c устарел в течение очень долгого времени и больше не поддерживается

Я использую scalatest-maven-plugin последней версии 1.0, с исходным кодом здесь. Попытка запустить мои наборы параллельно и использовать следующую конфигурацию:

<build><plugin>
    <groupId>org.scalatest</groupId>
    <artifactId>scalatest-maven-plugin</artifactId>
    <version>1.0</version> 
    <configuration>
        <reportsDirectory>${project.build.directory}/surefire-reports</reportsDirectory>
        <junitxml>.</junitxml>
        <filereports>WDF TestSuite.txt</filereports>
        <htmlreporters>${project.build.directory}/html/scalatest</htmlreporters>                    
        <parallel>true</parallel>
    </configuration>
    <executions>
        <execution>
            <id>test</id>
            <goals>
                <goal>test</goal>
            </goals>
        </execution>
    </executions>
</plugin></build>

приводит к следующей ошибке сборки Maven:

[INFO]
[INFO] --- scalatest-maven-plugin:1.0:test (test) @ myproject ---
Exception in thread "ScalaTest-main" java.lang.IllegalArgumentException: ERROR: -c has been deprecated for a very long time and is no longer supported, to prepare for reusing it for a different purpos
e in the near future. Please change all uses of -c to -P.
        at org.scalatest.tools.ArgsParser$.checkArgsForValidity(ArgsParser.scala:46)
        at org.scalatest.tools.Runner$.runOptionallyWithPassFailReporter(Runner.scala:857)
        at org.scalatest.tools.Runner$.main(Runner.scala:827)
        at org.scalatest.tools.Runner.main(Runner.scala)

По сути, самый мощный-плагин maven проходит -c в самый масштабный CLI вместо правильного -P.. или даже лучше -P10 т.е. количество потоков для использования.

Как я могу передать -P10 в самый масштабный процесс через Maven? Я попытался установить его в MAVEN_OPTS переменная окружения или непосредственно в Maven CLI, но она не обнаруживается.

Я также попытался настроить Scatatest-Maven-плагин, как это:

<configuration>
    <argLine>-P10</argLine>
</configuration>

но этот параметр передается в процесс Java, а не в Scalatest, поэтому он тоже не работает.

1 ответ

Решение

Я создал свой собственный ответвление от модуля scalatest-maven-plugin, устранил проблему с параллельными версиями и присвоил ей версию 1.1-SNAPSHOT. Мне также пришлось исправить сборку и т. Д. Все было сломано. Я включил загружаемую скомпилированную версию tarball scalatest-maven-plugin_1.1-SNAPSHOT.tar.gz

Затем, чтобы протестировать его, разветвил мою собственную версию примера scala-maven, в которой используется мой собственный форк scalatest-maven-plugin, и модифицировал самый масштабный пример кода для отображения идентификатора потока, который загружает каждый пакет, и идентификатора потока, который выполняет Первый тест каждой сюиты. Я также заставляю текущий поток спать в каждой из этих точек на случайное время до 10 секунд, чтобы посмотреть, что происходит. Все самые масштабные пакеты загружаются одним потоком и выполняются параллельно, если включена параллельная.

Это результат использования <parallel>false</parallel>:

[INFO] --- scalatest-maven-plugin:1.1-SNAPSHOT:test (test) @ scala-maven-testing ---
Discovery starting.
** loading 'net.lockney.AcceptanceTest' Suite with ThreadId=1
==> executing 'Simple thing state' test with ThreadId=1
** loading 'net.lockney.MatcherExampleSuite' Suite with ThreadId=1
** loading 'net.lockney.SimpleSpec' Suite with ThreadId=1
** loading 'net.lockney.SimpleSuite' Suite with ThreadId=1
Discovery completed in 19 seconds, 98 milliseconds.
Run starting. Expected test count is: 8
AcceptanceTest:
As a user 
I want to be able to create a simple thing and implicitly start it 
So that I can then turn it off 
And see that it is stopped 
Feature: Simple thing state
  Scenario: User stops thing when it's already on
    Given An initialized thing, that has not been started 
    When User stops it again 
    Then We should see that it is stopped 
==> executing 'equality' test with ThreadId=1
MatcherExampleSuite:
- equality
==> executing 'SimpleObject' should 'accept a String' test with ThreadId=1
- string matchers *** FAILED ***
  "something" did not end with substring "some" (MatcherExampleSuite.scala:29)
SimpleSpec:
SimpleObject
- should accept a String
- should even accept really long Strings
==> executing 'An empty Set should have size 0' test with ThreadId=1
...
Run completed in 28 seconds, 300 milliseconds.
Total number of tests run: 8
Suites: completed 5, aborted 0
Tests: succeeded 6, failed 2, canceled 0, ignored 0, pending 0
*** 2 TESTS FAILED ***

и это результат использования <parallel>true</parallel> а также <parallelThreads>10</parallelThreads>:

[INFO] --- scalatest-maven-plugin:1.1-SNAPSHOT:test (test) @ scala-maven-testing ---
Discovery starting.
** loading 'net.lockney.AcceptanceTest' Suite with ThreadId=1
==> executing 'Simple thing state' test with ThreadId=1
** loading 'net.lockney.MatcherExampleSuite' Suite with ThreadId=1
** loading 'net.lockney.SimpleSpec' Suite with ThreadId=1
** loading 'net.lockney.SimpleSuite' Suite with ThreadId=1
Discovery completed in 30 seconds, 904 milliseconds.
Run starting. Expected test count is: 8
MatcherExampleSuite:
SimpleSuite:
AcceptanceTest:
SimpleSpec:
SimpleObject
As a user 
I want to be able to create a simple thing and implicitly start it 
So that I can then turn it off 
And see that it is stopped 
Feature: Simple thing state
==> executing 'An empty Set should have size 0' test with ThreadId=13
==> executing 'SimpleObject' should 'accept a String' test with ThreadId=12
==> executing 'equality' test with ThreadId=11
...
Run completed in 40 seconds, 706 milliseconds.
Total number of tests run: 8
Suites: completed 5, aborted 0
Tests: succeeded 6, failed 2, canceled 0, ignored 0, pending 0
*** 2 TESTS FAILED ***
Другие вопросы по тегам