IntelliJ'de bir maven test hedefinde nasıl hata ayıklayabilirim?


83

İntellij ve maven pom dosyalarını kullanarak, hata ayıklama testlerini maven test hedefi içinde nasıl çalıştırırım?

Bunları doğrudan kodda çalıştırdığımda, intellij'in Maven Projeleri'nde işaretlediğim eksik profillerle ilgili bir şeyden şikayet ediyor.

Yanıtlar:


25

Hedefinize sağ tıklama ve "Hata ayıklama [hedefiniz]" (sizin durumunuzda test hedefi) ne olacak?

hata ayıklama hedefi


Ahh bunu düşünmedim. Cuma öğleden sonra çok geç: D Teşekkürler.
JavaRocky

27
Kesme noktalarını kullanmak istediğinizi varsayarsak, bu yanıt yetersizdir. Bunun yerine Hover'ın cevabına bakın.
David Groomes

186

http://maven.apache.org/plugins/maven-surefire-plugin/examples/debugging.html

IDEA'da, testinizi hata ayıklama modunda çalıştırın " mvn -DforkMode=never test"

Güncellendi : Çalıştırma / hata ayıklama yapılandırmanızı "Çalıştırıcı" sekmesinden açın,-DforkMode=never

görüntü açıklamasını buraya girin

(@ Mikeapr4 tarafından kaydedildi: surefire eklentisinin daha yeni sürümleri (2.14+) kullanım mvn -DforkCount=0 test)


Bu benim için çalıştı. Fikir 10'daki test hedefinde hata ayıklamak için aşağıdaki komutu kullanıyorum.
Swapnonil Mukherjee

1
Çoklu modül projemde bu, Intellij içinde benim için çalışan tek seçenekti.
nash

24
IDEA 11 ile Maven projelerinde bulduğum, test etmek istediğim modülün testine sağ tıklamam gerekti. Bu bir çalıştırma / hata ayıklama yapılandırması oluşturdu. Ardından bu yeni yapılandırmayı düzenleyin, çalıştırıcı sekmesine tıklayın ve VM Seçeneklerinde -DforkMode = asla ekleyin. Tamam'ı tıklayın. Bir kesme noktası ayarlayın, ardından yeni hata ayıklama yapılandırmasını çalıştırmak için hata ayıklama simgesine tıklayın. Yukarıdakilerin bir kombinasyonu, ipuçları için teşekkürler.
foolshat

@MarkM Breakpoints, bu yaklaşımı kullandığım için IJ13'te dikkate alınmıyor.
StephenBoesch

10
Surefire eklentisinin (2.14+) kullanımının daha yeni sürümlerine dikkat çekmeye değer mvn -DforkCount=0 test, bu aşağıda diğer (kafa karıştırıcı) cevaplarda belirtilmiştir, ancak gözden kaçabilirler .
mikeapr4

28

Aşağıdaki seçeneklerle testler yapıyorum:

mvn -Dmaven.surefire.debug="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=6666 -Xnoagent -Djava.compiler=NONE" test

... ve sonra uzaktan hata ayıklayıcı ile Maven'e bağlanın.


Log4j / logging'i çalıştırmayı başardınız mı? -Dlog4j.configuration = <log4j.properties yolunu> bile ekledim, ancak günlük ifadeleri yazdırılmıyor.
StephenBoesch

19

-DforkMode=never artık çalışmıyor, artık SureFire'da kullanımdan kaldırıldı.

-DforkCount=0Surefire eklentisi 2.14+ kullanırken bunun yerine kullanın .


1
Surefire dokümanları kullan diyor forkCountve reuseForksbunun yerine, bence yukarıdakilerin "Onun -DforkCount=0yerine kullan" demek olduğunu düşünüyorum . Denedim -DforkCount=0( reuseForksçatal olup olmadığı önemli olmamalı), ancak kesme noktam hiç açılmadı. -DforkMode=never(Maven 3.2.1, IDEA 13.1.2) ile trip yapar .
mmindenhall

10

Soru cevaplandı. Ama sadece kendi deneyimlerimi paylaşmak için. Seçilen cevap sorunumu çözmedi. Kodumun birden fazla modülü var.

Foolshat'ın cevabı sorunuma değerli bir bakış açısı getirdi.

İki çözümüm var, 1. IDEA'nızı kullanarak, bir VM seçeneği ekleyerek -DforkMode=never; Hata ayıklama modunda çalıştırılmalıdır. 2. Soketi belirterek bir uzaktan hata ayıklama kurun ve bu durumda forkMode gerekli değildir.

Sadece yaşadıklarımın bir özeti.


1

Colin Hebert'in çözümü benim için de işe yaramıyor. Ama şans eseri, test yönteminin yanında görünen yeşil üçgene sağ tıklayarak testte hata ayıklamanın kolay bir yolunu buldum:

Java test sınıfı örneği

Umarım bu size yardımcı olur!


1
Lütfen o sınıfın kodunu gönderin ve resim kullanmayın.
sağduyu

1
Bu yoruma katkıda bulunduğum şey, IntelliJ'de bir pencere açarak hata ayıklamanın bir yoludur. Sınıfın kodu önemsizdir.
David DRM
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.