0 امتیاز
قبل در برنامه نویسی توسط (1.1هزار امتیاز)

بمنظور سریعتر اجرا شدن تست ها، آیا راهی وجود دارد که تست های JUnit را در Maven بصورت همزمان اجرا کرد؟

2 پاسخ

+2 امتیاز
قبل توسط (2.2هزار امتیاز)
ویرایش شده قبل توسط

در ساختار پروژه های maven در شاخه src ، پوشه های main و test وجود دارد .کافیست که package های پروژه را همان گونه که در main ایجاد کرده اید در test هم ایجاد کنید و یک کلاس با نام کلاسی که در main هست با انتهای Test بسازید. از این پس maven همه تست کلاس ها را پیش از ساخت artifact نهایی اجرا خواهد کرد .

ساختار پروژه :

خروجی maven :

برای اجرای موازی تست ها از پلاگین زیر استفاده نمایید .

             <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.16</version>
                <configuration>
                    <forkCount>1</forkCount>
                    <reuseForks>true</reuseForks>
                    <argLine>-Xmx1024m -XX:MaxPermSize=256m</argLine>
                </configuration>
            </plugin>

 

http://maven.apache.org/surefire/maven-surefire-plugin/examples/fork-options-and-parallel-execution.html

 

قبل توسط (1.1هزار امتیاز)
این روشی که شما گفتید تست هارو پشت سر هم اجرا می کنه، من می خواهم مثلا 4 تا تست همزمان اجرا شه.
0 امتیاز
قبل توسط (1.1هزار امتیاز)

این قابلیت در JUnit 4 و با استفاده از Maven Surefire Plugin پشتیبانی می شود. تنظیم کردن Maven Surefire Plugin به چند طریق امکان پذیر خواهد بود:

اجرای متد های تست بصورت موازی:

<plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-surefire-plugin</artifactId>
   <version>2.5</version>
   <configuration>
     <parallel>methods</parallel>
     <threadCount>4</threadCount>
   </configuration>
</plugin>

اجرای کلاس های تست بصورت موازی:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <version>2.5</version>
  <configuration>
    <parallel>classes</parallel>
    <threadCount>4</threadCount>
  </configuration>
</plugin>

با استفاده از تگ threadCount می توانید تعداد thread های موازی را مشخص کنید.

تگ useUnlimitedThreads به ازای هر تست یک متد ایجاد می کند و سعی می کند تمام تست ها را بصورت موازی اجرا کند:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <version>2.5</version>
  <configuration>
    <parallel>classes</parallel>
    <useUnlimitedThreads>true</useUnlimitedThreads>
  </configuration>
</plugin>

سوالات مشابه

0 امتیاز
0 پاسخ 463 بازدید
0 امتیاز
1 پاسخ 714 بازدید
0 امتیاز
0 پاسخ 3.2هزار بازدید
+1 امتیاز
1 پاسخ 472 بازدید
+1 امتیاز
1 پاسخ 537 بازدید
0 امتیاز
1 پاسخ 512 بازدید
...