การทำให้ Maven ทำการทดสอบทั้งหมดแม้ในบางครั้งจะล้มเหลว


243

ฉันมีโครงการที่มีหลายโมดูล เมื่อการทดสอบทั้งหมดผ่านการทดสอบ Maven จะทดสอบทั้งหมด

เมื่อการทดสอบล้มเหลวในโมดูลแรก maven จะไม่ดำเนินการโครงการต่อไป ฉันได้ทำการทดสอบ FailureIgnore แล้วให้ตั้งค่าเป็นจริงในการตั้งค่า Surefire แต่ก็ไม่ได้ช่วยอะไร

ฉันจะทำให้ maven ทำการทดสอบทั้งหมดได้อย่างไร


maven-surefire plugin รุ่นใด
Pascal Thivent

คำตอบ:


359

จากเอกสาร Maven Embedder :

-fae, --fail-at-end ล้มเหลวเพียง แต่สร้างหลังจากนั้น; อนุญาตให้บิลด์ที่ไม่ได้รับผลกระทบทั้งหมดดำเนินการต่อ

-fn, --fail-never ไม่เคยล้มเหลวสร้างโดยไม่คำนึงถึงผลโครงการ

ดังนั้นถ้าคุณกำลังทดสอบหนึ่ง-faeโมดูลกว่าที่คุณมีความปลอดภัยในการใช้

มิฉะนั้นถ้าคุณมีโมดูลหลายและถ้าคุณต้องการทั้งหมดของพวกเขาผ่านการทดสอบ (แม้คนที่ขึ้นอยู่กับความล้มเหลวในการทดสอบโมดูล) mvn clean install -fnคุณควรจะทำงาน
-faeจะดำเนินการต่อกับโมดูลที่มีการทดสอบที่ล้มเหลว (จะเรียกใช้การทดสอบอื่น ๆ ทั้งหมด) แต่โมดูลทั้งหมดที่ขึ้นอยู่กับมันจะถูกข้าม


1
นอกจากนี้คุณสามารถเพิ่ม -e สำหรับ cmd เพื่อให้ข้อมูลข้อผิดพลาดบางอย่าง
despot

11
--fail-neverฉันเพียงแค่การทดสอบตัวเลือก Maven จะไม่ล้มเหลวในการสร้างแม้ว่าจะมีข้อผิดพลาดในการรวบรวม ถ้าฉันใช้ตัวเลือกนี้กับ Jenkins งานสร้างดูสำเร็จแม้ว่าจะมีข้อผิดพลาดในการคอมไพล์ ฉันชอบ-Dmaven.test.failure.ignore=trueในกรณีนี้และให้เจนกินส์วิเคราะห์รายงานที่ได้ผล
fuemf5

@wlnirvana ฉันได้แก้ไขโพสต์ทันทีด้วยลิงก์นี้ (ดังนั้นโปรดลบความคิดเห็นของคุณ ... )
Steve Chambers

93

ฉันเพิ่งพบพารามิเตอร์ "-fae" ซึ่งทำให้ Maven เรียกใช้การทดสอบทั้งหมดและไม่หยุดเมื่อล้มเหลว


3
น่าเสียดายที่พารามิเตอร์นี้ใช้งานไม่ได้เมื่อฉันส่งให้ TeamCity
ripper234

4
ในโครงการหลายโมดูลโมดูลที่ขึ้นอยู่กับโมดูลที่ล้มเหลวในการทดสอบจะถูกข้าม ใช้ -fn แทน
hipokito

2
@ ripper234 คุณพบวิธีที่จะทำให้มันใช้งานได้กับ TeamCity หรือไม่?
Jeredriq Demas

86

คุณสามารถทดสอบด้วยแหง 2.6 และทั้งกำหนดค่าที่ surefire testFailureIgnore=trueกับ หรือบนบรรทัดคำสั่ง:

mvn install -Dmaven.test.failure.ignore=true

16
IIRC สิ่งนี้มีผลกระทบของการสร้างทั้งหมดไม่ได้ล้มเหลวแทนที่จะทำการทดสอบทั้งหมดและล้มเหลวในที่สุด
Ondra Žižka

1
นี่เป็นตัวเลือกเดียวที่เหมาะกับฉัน ... ตัวเลือก "-fae" ไม่ได้ทำอะไรเลยในการทดสอบล้มเหลว
Yoi

38

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

<project>
  [...]
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
          <testFailureIgnore>true</testFailureIgnore>
        </configuration>
      </plugin>
    </plugins>
  </build>
  [...]
</project>

17

คำตอบด่วน:

mvn -fn test

ทำงานร่วมกับการสร้างโครงการที่ซ้อนกัน

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