@Steve C ve @ ashosborne1 tarafından sunulan seçeneklerde farklılıklar ve kısıtlamalar vardır. Onların belirtilmesi gerektiğine inanıyorum.
Ne zaman kullanabiliriz File resourcesDirectory = new File("src/test/resources");
?
- 1 Testler IDE üzerinden değil sadece maven üzerinden yapılacaktır.
- 2.1 Testler maven veya
- 2.2 IDE üzerinden ve sadece bir proje IDE'ye aktarılır. (“İthal” terimini kullanıyorum, çünkü IntelliJ IDEA içinde kullanılıyor. Bu işe yarayacak, IDE üzerinden test çalıştırdığınızda çalışma dizininiz projenizle aynı olacaktır.
- 3.1 Testler maven veya
- 3.2 IDE aracılığıyla ve birden fazla proje IDE'ye içe aktarılır (öğrenci olmadığınızda, genellikle birkaç projeyi içe aktarırsınız) ve IDE aracılığıyla testleri çalıştırmadan önce, çalışma dizini testleriniz için manuel olarak yapılandırırsınız. Bu çalışma dizini, testleri içeren içe aktarılmış projenize başvurmalıdır. Varsayılan olarak, IDE'ye aktarılan tüm projelerin çalışma dizini yalnızca bir tanesidir. Muhtemelen
IntelliJ IDEA
sadece bir kısıtlamadır , ancak bence tüm IDE'ler bu şekilde çalışır. Ve manuel olarak yapılması gereken bu yapılandırma hiç de iyi değil. Farklı maven projelerinde var olan, ancak tek bir büyük “IDE” projesine aktarılan çeşitli testlerle çalışarak, bizi hatırlamaya zorlar ve rahatlamanıza ve işinizden zevk almanıza izin vermez.
@ Ashosborne1 tarafından sunulan çözüm (kişisel olarak bunu tercih ederim), testleri çalıştırmadan önce yapılması gereken 2 ek gereksinim gerektirir. Bu çözümü kullanma adımlarının listesi aşağıdadır:
“Src / test / resources /” içinde bir test klasörü (“teva”) ve dosya (“benioku”) oluşturun:
src / test / kaynaklar / teva / beni oku
Dosya test klasöründe oluşturulmalıdır, aksi takdirde çalışmaz. Maven boş klasörleri yok sayar.
En az bir kez üzerinden proje oluşturun mvn clean install
. Testler de yapacaktır. Tüm bir proje oluşturmadan sadece test sınıfınızı / yönteminizi maven üzerinden çalıştırmak yeterli olabilir. Sonuç olarak, test kaynaklarınız test sınıflarına kopyalanacaktır, işte bir yol:target/test-classes/teva/readme
Bundan sonra, @ ashosborne1 tarafından zaten sunulan kodu kullanarak klasöre erişebilirsiniz (Üzgünüm, bu öğe listesinin içindeki bu kodu doğru bir şekilde düzenleyemediğim için):
public static final String TEVA_FOLDER = "teva"; ...
URL tevaUrl = YourTest.class.getClassLoader().getResource(TEVA_FOLDER);
String tevaTestFolder = new File(tevaUrl.toURI()).getAbsolutePath();
Artık testinizi IDE üzerinden istediğiniz kadar çalıştırabilirsiniz. Temiz mvn çalışana kadar. Hedef klasörü düşecektir.
Bir test klasörü içinde dosya oluşturma ve maven'i ilk kez çalıştırma, IDE aracılığıyla testleri çalıştırmadan önce gerekli adımlar gereklidir. Bu adımlar olmadan, sadece IDE'nizde test kaynakları oluşturursanız, test yazıp yalnızca IDE ile çalıştırın, bir hata alırsınız. Testleri mvn ile yapmak test kaynaklarını hedef / test sınıfları / teva / benioku dosyasına kopyalar ve bir sınıf yükleyici için erişilebilir hale gelir.
IDE'de neden birden fazla maven projesini içe aktarmaya ihtiyacım olduğunu ve neden bu kadar karmaşık şeyleri sorabilirsiniz? Benim için temel motivasyonlardan biri: IDA ile ilgili dosyaları koddan uzak tutmak. İlk olarak IDE'mde yeni bir proje oluşturuyorum. Sahte bir projedir, bu sadece IDE ile ilgili dosyaların sahibidir. Sonra, zaten var olan maven projelerini ithal ediyorum. İçe aktarılan bu projeleri IDEA dosyalarını yalnızca orijinal sahte projemde tutmaya zorlarım. Sonuç olarak kod arasında IDE ile ilgili dosyaları görmüyorum. SVN onları görmemelidir (svn / git'i bu dosyaları yok saymak için yapılandırmayı önermeyin, lütfen). Ayrıca sadece çok uygun.