অ্যান্ড্রয়েড স্টুডিওতে পরীক্ষার সংস্থান নিয়ে আমার প্রচুর সমস্যা হয়েছিল তাই আমি স্বচ্ছতার জন্য কয়েকটি পরীক্ষা সেট আপ করেছি। আমার
mobile
(অ্যান্ড্রয়েড অ্যাপ্লিকেশন) প্রকল্পে আমি নিম্নলিখিত ফাইলগুলি যুক্ত করেছি:
mobile/src/test/java/test/ResourceTest.java
mobile/src/test/resources/test.txt
mobile/src/test/resources/test/samePackage.txt
পরীক্ষার শ্রেণি (সমস্ত পরীক্ষা পাস):
assertTrue(getClass().getResource("test.txt") == null)
assertTrue(getClass().getResource("/test.txt").getPath().endsWith("test.txt"))
assertTrue(getClass().getResource("samePackage.txt").getPath().endsWith("test/samePackage.txt"))
assertTrue(getClass().getResource("/test/samePackage.txt").getPath().endsWith("test/samePackage.txt"))
assertTrue(getClass().getClassLoader().getResource("test.txt").getPath().endsWith("test.txt"))
assertTrue(getClass().getClassLoader().getResource("test/samePackage.txt").getPath().endsWith("test/samePackage.txt"))
একই রুট প্রকল্পের আমি একটি আছে জাভা (না অ্যান্ড্রয়েড) প্রকল্পের নামক data
। যদি আমি ডেটা প্রকল্পে একই ফাইল যুক্ত করি:
data/src/test/java/test/ResourceTest.java
data/src/test/resources/test.txt
data/src/test/resources/test/samePackage.txt
তারপর উপরে সমস্ত পরীক্ষার যদি আমি তাদের অ্যান্ড্রয়েড স্টুডিও থেকে চালানো ব্যর্থ হবে, কিন্তু তারা সঙ্গে কমান্ড লাইন পাস ./gradlew data:test
। কাছাকাছি যেতে আমি এই হ্যাকটি ব্যবহার করি (গ্রোভিতে)
def resource(String path) {
getClass().getResource(path) ?:
new File(getClass().getClassLoader().getResource('.').path
.replace('/build/classes/test/', "/build/resources/test$path"))
}
ব্যবহার: resource('/test.txt')
অ্যান্ড্রয়েড স্টুডিও 2.3, গ্রেডেল 3.3