แพ็คเกจ / การติดตั้ง Maven โดยไม่มีการทดสอบ (ข้ามการทดสอบ)


343

ฉันพยายามจัดทำโปรเจคของฉัน แต่จะรันการทดสอบก่อนหน้าโดยอัตโนมัติเพื่อทำการบรรจุภัณฑ์ การทดสอบจะแทรกเนื้อหาบางส่วนลงในฐานข้อมูล นี่ไม่ใช่สิ่งที่ฉันต้องการฉันต้องหลีกเลี่ยงการเรียกใช้การทดสอบในขณะที่แพ็คเกจแอปพลิเคชัน ใครรู้วิธีรันแพ็คเกจโดยไม่ต้องทำการทดสอบ


13
การทดสอบหน่วยควรประกอบด้วย 4 ขั้นตอนต่อไปนี้: การเริ่มต้น, การทดสอบ, การตรวจสอบและการฉีกขาด บางทีคุณควรปรับการทดสอบของคุณและเพิ่มการลบล้าง / ล้างฐานข้อมูลของคุณหรือคุณควรใช้อินสแตนซ์ฐานข้อมูลแยกต่างหากไม่ใช่ไฟล์ที่บรรจุในไฟล์ jar ของคุณเพื่อใช้ในการทดสอบ
Marc-Christian Schulze

ดูเหมือนว่าการทดสอบของคุณจะ "หนัก" ดังนั้นคุณไม่ต้องการดำเนินการทดสอบ แต่มันเป็นการปฏิบัติที่ไม่ดี บางทีกรอบงานบางอย่างในฐานะ DBUnit อาจช่วยคุณได้? หรือคุณสามารถคืนค่าการเปลี่ยนแปลงฐานข้อมูลเมื่อสิ้นสุดการทดสอบ?
Mickael Marrache

คำตอบ:


575

เรียกใช้ maven ด้วย

mvn package -Dmaven.test.skip=true 

1
ขอบคุณสำหรับการตอบกลับของคุณทันทีฉันกำลังเรียกใช้จาก eclipse ที่ฉันเพิ่มคำสั่ง -Dmaven.test.skip = true?
vks

10
ฉันไม่เคยเปิดตัว mvn จาก eclipse แต่ในหน้าต่าง Run Configuration ที่คุณกำหนดค่าเป้าหมายและโปรไฟล์ของ maven จะมีช่องทำเครื่องหมาย 'ข้ามการทดสอบ' บางทีนั่นอาจเป็นการหลอกลวง
Giorgos Dimtsas

9
ตามเอกสารที่จะข้ามการรวบรวมเช่นเดียวกับการดำเนินการ คุณสามารถใช้ -DskipTests เพื่อข้ามการดำเนินการ โพสต์นี้ยังให้คำเตือนบางอย่างเกี่ยวกับเวอร์ชันที่คุณสามารถใช้แต่ละแฟ
ล็

1
ขอบคุณมากฉันเคยใช้มัน-DskipTestsแต่มันใช้งานไม่ได้อีกต่อไปมีความคิดว่าทำไม?
สาม

7
โปรดทราบว่าMaven Surefire ปลั๊กอินและMaven Failsafe ปลั๊กอินเอกสารแสดงให้เห็นว่าการตั้งค่าเป็นที่ต้องการการตั้งค่าskipTests maven.test.skip
Filip Bártek

172

เพียงแค่ให้คำสั่งที่กล่าวถึงด้านล่างซึ่งจะละเว้นการดำเนินการกรณีทดสอบ

mvn package -DskipTests

4
สำหรับฉันนี้จะไม่ทำงาน ฉันต้องใช้โซลูชันที่ได้รับการยอมรับแทน
Sebas

1
-DskipTestsไม่ทำงานสำหรับฉันเมื่อฉันใช้mvn clean install -DskipTests
Vishrant

1
ปรับบางส่วนเพราะมันจะไม่ดำเนินการทดสอบ แต่มันจะทดสอบการเรียน Comile .....
Antoniossss

สำหรับผู้ติดตาม-DskipTestsเหมือนกับ-Dmaven.test.skip.exec=true stackoverflow.com/a/21933970/32453และใช่มันรวบรวมการทดสอบและไม่เรียกใช้ (ในขณะที่-Dmaven.test.skip=trueไม่ได้รวบรวม)
rogerdpack

47

คุณสามารถเพิ่มการกำหนดค่าปลั๊กอินนี้ให้ pom ของคุณหากคุณไม่ต้องการตั้งบรรทัดคำสั่ง arg:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <configuration>
    <skipTests>true</skipTests>
  </configuration>
</plugin>

3
คุณไม่สามารถรันการทดสอบจากบรรทัดคำสั่งด้วยการกำหนดค่านี้อีกต่อไป
Emmanuel Bourg

1
@EmmanuelBourg สามารถแก้ไขได้โดยทำตามคำแนะนำในตัวอย่างนี้maven.apache.org/plugins/maven-surefire-plugin/examples/ …
smp7d

1
ลิงค์ที่ถูกต้องmaven.apache.org/surefire/maven-surefire-plugin/examples/ …
ulab

41

โปรดทราบว่า -Dmaven.test.skip ป้องกันไม่ให้ Maven สร้างสิ่งประดิษฐ์โถทดสอบ

หากคุณต้องการข้ามการทดสอบ แต่สร้างสิ่งประดิษฐ์ตามการใช้งานปกติ:

-Dmaven.test.skip.exec

1
นี่คือแอสเวิร์ที่ฉันกำลังมองหาทำงานได้ดีขอบคุณ
Binita Bharati

ฉันจะจำได้ยังไง ทำไมไม่สร้างนามแฝงที่ชัดเจนและจดจำง่ายเช่น "skipTests"
TheRealChx101

32

หากคุณลองทำสิ่งนี้ใน Windows Powershell คุณจะได้รับข้อผิดพลาดนี้:

[ERROR] Unknown lifecycle phase ".test.skip=true". You must specify a valid lifecycle phase or a goal in the format...

เหตุผลในการนี้คือ Powershell " -" มีความหมายพิเศษและทำให้เกิดปัญหากับ maven

วิธีแก้ปัญหาคือเติมมันด้วย backtick (`) เช่นนั้น ..

mvn `-Dmaven.test.skip=true install 

การอ้างอิง: http://kuniganotas.wordpress.com/2011/08/12/invalid-task-test-skiptrue-you-must-specify-a-valid-lifecycle-phase/


1
ฉันมีปัญหาเดียวกันและสิ่งนี้แก้ไขได้สำหรับฉัน ขอบคุณ.
ถึง


18

คุณสามารถผ่านการmaven.test.skipตั้งค่าสถานะเป็นอาร์กิวเมนต์ JVM เพื่อข้ามการทดสอบการทำงานเมื่อระยะแพคเกจ (และก่อนหน้านี้ในวงจรชีวิตเริ่มต้น) จะทำงาน:

mvn package -Dmaven.test.skip=true

คุณยังสามารถส่งskipTestsแฟล็กเพียงอย่างเดียวไปยังไฟล์เรียกทำงาน mvn หากคุณต้องการรวมข้อมูลนี้ใน POM ของคุณคุณสามารถสร้างโปรไฟล์ใหม่ที่คุณสามารถกำหนดค่าmaven-surefire-pluginให้ข้ามการทดสอบได้




11

ตอบคำถามเก่าและเป็นที่ยอมรับที่นี่ คุณสามารถเพิ่มสิ่งนี้ใน pom.xml ของคุณหากคุณต้องการหลีกเลี่ยงการส่งผ่านอาร์กิวเมนต์บรรทัดคำสั่งตลอดเวลา:

  <properties>
    <skipTests>true</skipTests>
  </properties>

11

คุณสามารถเพิ่มอย่างใดอย่างหนึ่ง-DskipTestsหรือคำสั่ง-Dmaven.test.skip=trueใด ๆmvnสำหรับการข้ามการทดสอบ ในกรณีของคุณมันจะเป็นดังนี้:

mvn package -DskipTests

หรือ

mvn package -Dmaven.test.skip=true


4

การทดสอบควร [1] ทำงานก่อนแพ็คเกจ หากคุณต้องการปิดการทดสอบคุณกำลังทำอะไรผิด คุณกำลังพยายามแก้ไขปัญหาที่ผิด คิดว่าปัญหาของคุณคืออะไรและถามคำถามนั้น ดูเหมือนว่าเกี่ยวข้องกับฐานข้อมูล

[1] คุณอาจข้ามการทดสอบเมื่อคุณต้องการสร้างสิ่งประดิษฐ์สำหรับท้องถิ่นการใช้เพื่อการพัฒนา แต่โดยทั่วไปการสร้างสิ่งประดิษฐ์ควรทำตามการทดสอบที่ประสบความสำเร็จเสมอ


ฉันมีปัญหาที่คล้ายกัน: แอปพลิเคชันของฉันมี websocket เมื่อฉันเรียกใช้การติดตั้ง mvn ใหม่ทั้งหมดฉันจะสิ้นสุดในชุดการทดสอบที่ไม่มีที่สิ้นสุด ก่อนที่ฉันจะบังคับให้ปิดกระบวนการจะดำเนินต่อไปเป็นเวลา 3 ชั่วโมงและข้อความที่พิมพ์เป็นเพียงเกี่ยวกับ Websocket คุณช่วยโปรดตรวจสอบปัญหาของฉันเพื่อดูว่าฉันกำลังทำอะไรผิดหรือเปล่า? stackoverflow.com/questions/54614739/…
georgeB

กฎมีข้อยกเว้นเสมอ หากคุณไม่คิดเช่นนั้นคุณผิด
Jay Sullivan


2

สำหรับแพ็คเกจ Maven โดยไม่ติดไวรัสทดสอบ Maven:

<properties>
    <maven.test.failure.ignore>true</maven.test.failure.ignore>
</properties>

ขอบคุณฉันต้องการตรงนี้วันนี้
Sean McMillan

1

เห็นได้ชัดว่าคุณทำผิดวิธี การทดสอบเป็นส่วนสำคัญของการเตรียมบรรจุภัณฑ์ คุณไม่ควรเพิกเฉยหรือข้าม แต่ควรทำอย่างถูกวิธี ลองเปลี่ยนฐานข้อมูลที่จะแทรกข้อมูล (เช่น test_db) อาจใช้เวลาสักครู่ในการตั้งค่า และเพื่อให้แน่ใจว่าสามารถใช้ฐานข้อมูลนี้ได้ตลอดไปคุณควรลบข้อมูลทั้งหมดเมื่อสิ้นสุดการทดสอบ JUnit4 มีคำอธิบายประกอบซึ่งทำให้ง่ายสำหรับคุณ ใช้ @Before, @After @Test คำอธิบายประกอบสำหรับวิธีการที่เหมาะสม คุณต้องใช้เวลากับมันบ้าง แต่มันจะคุ้มค่า!


9
ฉันคิดว่าคำถามเช่นเดียวกับความปรารถนาที่จะจัดแพคเกจโดยไม่ต้องใช้การทดสอบที่ถูกต้องสมบูรณ์ ฉันไม่คิดว่า OP "เห็นได้ชัดว่าทำผิดทาง" ผู้คนและโครงการต่าง ๆ มีความต้องการที่แตกต่างกันและสิ่งเหล่านี้มักไม่สอดคล้องกับ Maven Bible หรือความเชื่อของคนต่าง ๆ (เช่นตัวคุณเอง) เกี่ยวกับการพัฒนาซอฟต์แวร์ที่ควรทำงาน ฉันคิดว่าคำตอบของคุณจะได้รับการชื่นชมมากขึ้นโดยไม่ต้องใช้วิธีการวางตัว
Zero3

1

ใน Intellij ไปที่ View -> Tool Windows -> เลือก Maven Projects ในรายการดร็อปดาวน์ Lifecyle คลิกขวาที่แพ็คเกจ -> เลือกสร้าง 'your-project [แพ็คเกจ]' ...

ป้อนค่านี้: package -Dmaven.test.skip=true -f pom.xmlในฟิลด์บรรทัดคำสั่ง คลิกนำไปใช้และเมนูดรอปดาวน์เรียกใช้การกำหนดค่าควรปรากฏขึ้นพร้อมกับคำสั่ง maven ที่คุณกำหนดเองที่สร้างขึ้น


ทำไม downvote นี้ ฉันใช้สิ่งนี้ทุกครั้งที่ฉันต้องการสร้างโครงการ แต่ไม่ผ่านการทดสอบ
Patrick Tolentino



-1

วิธีที่ดีที่สุดและง่ายที่สุดใน IntelliJ Idea ในหน้าต่าง“ Maven Project” และอย่าคลิกที่ปุ่มทดสอบ ฉันหวังว่าฉันช่วยคุณ ขอให้เป็นวันที่ดี :)


1
ถ้าคุณคลิกแพ็คเกจมันจะทำการทดสอบซึ่งเป็นสิ่งที่ OP พยายามหลีกเลี่ยง
Charlie
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.