0

Это базовый класс наших модульных тестов:SpringJUnit4ClassRunner - перезагружает контекст для каждого теста, хотя тот же контекст используется

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration("/spring/test-context.xml") 
public abstract class BaseUnitTest {} 

Все модульные тесты расширить этот класс.

Когда я запускаю тесты локально в eclipse (используя Run As> Unit Test), тесты запускаются через 5 секунд, так как один и тот же контекст используется всеми тестами и загружается только один раз.

Однако, когда я запускаю их с использованием тестовой цели mvn, это занимает около 5 минут. После просмотра журналов я вижу, что контекст приложения загружается для каждого теста. Это занимает то же время (5 минут), когда мы запускаем его на нашем сервере Jenkins CI.

Не уверен, что происходит. В весенних документах говорится, что appContext следует повторно использовать даже с maven, но это не так.

Любая помощь будет оценена по достоинству.

UPDATE: Я побежал МВНА отладочных флажков, и я вижу, что новый JVM порожден для каждого теста:

ветвления командной строки: cmd.exe/X/C «Java -Xverify: нет -jar S: \ git \ picaxo21 \ picaxo \ picaxoService \ target \ surefire \ surefirebooter8169952914558366417.jar S: \ git \ picaxo21 \ picaxo \ picaxoService \ target \ surefire \ surefire8550033206398936560tmp S: \ git \ picaxo21 \ picaxo \ picaxoService \ target \ surefire \ surefire_05655453605766528120tmp "

ветвление командной строки: cmd.exe/X/C" ява -Xverify: нет -jar S: \ мерзавец \ picaxo21 \ picaxo \ picaxoService \ цель \ безошибочный \ surefirebooter4 002024477779069323.jar S: \ мерзавец \ picaxo21 \ picaxo \ picaxoService \ цель \ безошибочный \ surefire6735432532690834115tmp S: \ мерзавец \ picaxo21 \ picaxo \ picaxoService \ цель \ безошибочный \ surefire_17783676008756503456tmp»

ветвление командной строки: cmd.exe/X/C "java -Xverify: none -jar S: \ git \ picaxo21 \ picaxo \ picaxoService \ target \ surefire \ 7874269889863176184.jar S: \ git \ picaxo21 \ picaxo \ picaxoService \ target \ surefire \ surefire2050758518148174678tmp S: \ git \ picaxo21 \ picaxo \ picaxoService \ target \ surefire \ surefire_27591156970671336255tmp "

Я использую forkCount = 1 и reuseForks = true, поэтому я не уверен, почему это происходит. любые подсказки?

Родитель POM:

<?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/maven-v4_0_0.xsd"> 
<modelVersion>4.0.0</modelVersion> 
<parent> 
    ..... 
</parent> 

<groupId>...</groupId> 
<artifactId>picaxo</artifactId> 
<version>0.0.1-SNAPSHOT</version> 
<packaging>pom</packaging> 
<name>.....</name> 
<description>Build All Modules</description> 

<modules> 
    <module>picaxoService</module> 
</modules> 

<scm> 
    .... 
</scm> 

<properties> 
    <pmd.include.tests>true</pmd.include.tests> 
    <findbugs.plugin.version>3.0.0</findbugs.plugin.version> 
    <fb.threshold>Low</fb.threshold> 
    <fb.includeTests>true</fb.includeTests> 
    <fb.effort>Max</fb.effort> 
    <fb.failOnError>false</fb.failOnError> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    <skipTests>true</skipTests> 
</properties> 

<build> 
    <plugins> 
     <plugin> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <configuration> 
       <testFailureIgnore>true</testFailureIgnore> 
       <skipTests>${skipTests}</skipTests> 
       <reuseForks>true</reuseForks> 
       <forkCount>1</forkCount> 
       <excludes> 
        <exclude>**/*IntegrationTest.java</exclude> 
       </excludes> 
      </configuration> 
      <executions> 
       <execution> 
        <id>integration-test</id> 
        <goals> 
         <goal>test</goal> 
        </goals> 
        <phase>integration-test</phase> 
        <configuration> 
         <excludes> 
          <exclude>none</exclude> 
         </excludes> 
         <includes> 
          <include>**/*IntegrationTest.java</include> 
         </includes> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
</build> 

+0

Не могли бы вы разместить свой pom.xml? –

+0

Я отправил родительского помпа. У picaxoService pom.xml нет ничего конкретного. –

ответ

0

Нашли проблему. Очевидно, forkMode для верного плагина по умолчанию для pertest, следовательно, создавал новую JVM для каждого теста. Явная установка его в один раз в конфигурации плагина решила проблему.