গ্রেডলের সাথে কীভাবে জুনিয়ট পরীক্ষা চালানো যায়?


99

বর্তমানে আমার কাছে নিম্নলিখিত বিল্ড.gradle ফাইল রয়েছে:

apply plugin: 'java'

sourceSets {
    main {
        java {
            srcDir 'src/model'
        }
    }
}

dependencies {
    compile files('libs/mnist-tools.jar', 'libs/gson-2.2.4.jar')
    runtime fileTree(dir: 'libs', include: '*.jar')
}    


এই বিল্ড.gradle ফাইলটি এখানে আমার সংগ্রহস্থলের জন্য । আমার সমস্ত প্রধান ফাইলগুলি এসআরসি / মডেল / এবং তাদের স্বতন্ত্র পরীক্ষাগুলি পরীক্ষা / মডেলগুলিতে রয়েছে

আমি কীভাবে সঠিকভাবে JUnit 4 নির্ভরতা যুক্ত করব এবং তারপরে পরীক্ষাগুলি / মডেলের ফোল্ডারে সেই পরীক্ষাগুলি চালাব ?

উত্তর:


107

আমি কীভাবে সঠিকভাবে একটি জুনিট 4 নির্ভরতা যুক্ত করব?

ধরে নিই যে আপনি একটি স্ট্যান্ডার্ড মাভেন (বা সমমানের) রেপোর বিরুদ্ধে সমাধান করছেন:

dependencies {
    ...
    testCompile "junit:junit:4.11"  // Or whatever version
}

পরীক্ষাগুলি / মডেলগুলির ফোল্ডারে সেই পরীক্ষাগুলি চালাবেন?

আপনি নিজের পরীক্ষার উত্সটি একইভাবে সেট করুন:

sourceSets {
    ...

    test {
        java {
            srcDirs = ["test/model"]  // Note @Peter's comment below
        }
    }
}

তারপরে পরীক্ষাগুলি শুরু করুন:

./gradlew test

সম্পাদনা: আপনি যদি এর পরিবর্তে জুনিট 5 ব্যবহার করেন, সম্পূর্ণ করার জন্য আরও পদক্ষেপ রয়েছে, আপনার এই টিউটোরিয়ালটি অনুসরণ করা উচিত ।


8
srcDirs = ["test/model"]এটি কিছুটা সুনির্দিষ্ট কারণ এটি ডিফল্ট পরীক্ষার উত্স ডিরেক্টরি থেকে মুক্তি পেয়েছে, অন্যদিকে srcDir "test/model"ডিরেক্টরিটি যুক্ত করে। mainউত্স সেট জন্য একই ।
পিটার নিদারউইজার

49

আপনি যদি ডিফল্ট গ্রেডেল প্যাকেজ কাঠামো দিয়ে আপনার প্রকল্পটি সেট আপ করেন, যেমন:

src/main/java
src/main/resources
src/test/java
src/test/resources

তারপরে আপনার পরীক্ষাগুলি চালানোর জন্য আপনার উত্সপত্রগুলি সংশোধন করার প্রয়োজন হবে না। গ্রেডল সনাক্ত করবে যে আপনার পরীক্ষার ক্লাস এবং সংস্থানগুলি এসসিআর / পরীক্ষায় রয়েছে। তারপরে আপনি ওলিভার উপরে যা বলেছিলেন তেমন চালাতে পারেন। একটি বিষয় লক্ষণীয়: সম্পত্তি ফাইলগুলি সেট করার সময় এবং গ্রেড এবং আপনি আইডিই উভয় দিয়ে আপনার পরীক্ষা ক্লাস পরিচালনা করার সময় সাবধান হন। আমি Eclipse ব্যবহার করি এবং এটি থেকে JUnit চালানোর সময়, Eclipse একটি শ্রেণিপথ (বিন ডিরেক্টরি) চয়ন করে যেখানে গ্রেড আরেকটি (বিল্ড ডিরেক্টরি) চয়ন করে। আপনি যদি কোনও রিসোর্স ফাইল সম্পাদনা করেন এবং পরীক্ষার রানটাইমে আপনার পরিবর্তন প্রতিফলিত না হন তবে এটি বিভ্রান্তির সৃষ্টি করতে পারে।


4
গ্রিডলের মতো একই ডিয়ারে অ্যালিপস বিল্ড ফাইলগুলি পরিচালনা করতে (কয়েকটি হতাশাজনক ত্রুটি রোধ করতে পারে): প্রকল্প -> সম্পত্তি -> জাভা বিল্ড পাথ -> ডিফল্ট আউটপুট ফোল্ডার: "বিল্ড" দিয়ে "বিন" প্রতিস্থাপন করুন। যাইহোক ... আমার অভিজ্ঞতাতে এটি প্রায়শই অপ্রত্যাশিতভাবে ডিফল্ট "বিন" -র কাছে "পিছলে যাওয়ার" এর বিচ্ছিন্ন অভ্যাস আছে বলে মনে হয়। ডিফল্টরূপে "বিল্ড" ব্যবহারের জন্য গ্রহনটি পাওয়ার কোনও উপায় আছে কিনা তা জানতে পেরে ভাল লাগবে।
মাইকে রডেন্ট

4
@ মাইক-করাল যতদূর আমি জানি এটা স্পষ্টভাবে অন্ধকার এবং gradle (দেখুন উদাঃ জন্য একই বিল্ড পথ শেয়ার করতে নিরুৎসাহিত করা হয় discuss.gradle.org/t/... )
mtraut

ঠিক আছে, আমি সংশোধন দাঁড়িয়ে! ... এবং আমি মনে করি একই দির সংকলন থেকে আর কিছু পাওয়ার দরকার নেই। বেশিরভাগ উদ্দেশ্যেই গ্রহগ্রাহী নির্মাতার কার্যকারিতা নিছক বৈধকরণের সরঞ্জামে পরিণত হয়: "ওফফ, এক্স, ওয়াই এবং জেড এর কারণে এটি সংকলন করবে না"।
মাইকে রডেন্ট

4
@ ডিভিডিফ আমার এসসিআর ফোল্ডারগুলির কাঠামোটি উপরে উল্লিখিত একইভাবে সেটআপ করা হয়েছে, তবে এখনও আমি গ্রেড পরীক্ষা দিলে এটি কিছুই করে না। এটি আমার পরীক্ষা মোটেই চালায় না। কোন ধারণা?
গৌরব

@ গৌরব, আমি আপনাকে একটি চ্যাটরুমে আমন্ত্রণ জানিয়েছিলাম যাতে আমরা এটির বিষয়ে অফলাইনে কথা বলতে পারি।
ডিভডিফ

16

যদি আপনি স্প্রিং ইনিশিয়ালাইজার দিয়ে আপনার প্রকল্পটি তৈরি করেন তবে সবকিছু সঠিকভাবে কনফিগার করা উচিত এবং আপনার যা করা দরকার তা চালানো হয় ...

./gradlew clean test --info
  • ড্রপ --infoআপনি যদি পরীক্ষার আউটপুট দেখতে না চান তবে ।
  • cleanআপনি যদি সর্বশেষ পরিবর্তনের পরে ইতিমধ্যে পাস করা পরীক্ষাগুলি পুনরায় চালু করতে না চান তবে ড্রপ করুন ।

build.gradleস্প্রিং বুটে পরীক্ষার জন্য নির্ভরতাগুলির প্রয়োজন ...

dependencies {
    compile('org.springframework.boot:spring-boot-starter')
    testCompile('org.springframework.boot:spring-boot-starter-test')
}

কিছু কারণে পরীক্ষা রানার এটা বলতে না, কিন্তু এটা একটি HTML প্রতিবেদন উৎপন্ন build/reports/tests/test/index.html


0

টেস্টকোম্পাইল হ্রাস করা হয়। গ্রেডেল 7 সামঞ্জস্যপূর্ণ:

dependencies {
...
   testImplementation 'junit:junit:4.13'
}

এবং যদি আপনি ডিফল্ট ফোল্ডার কাঠামো (src / test / java / ...) ব্যবহার করেন তবে পরীক্ষার বিভাগটি কেবল:

test {
    useJUnit()
}

শেষ অবধি:

gradlew clean test

এলোস দেখুন: https://docs.gradle.org/current/userguide/java_testing.html


0

আপনি যদি সক্রিয় স্বাদ নির্বিশেষে কোনও মডিউলের মধ্যে বিদ্যমান বিদ্যমানগুলি ছাড়াও পরীক্ষার জন্য উত্সসেট যুক্ত করতে চান:

sourceSets {
    test {
        java.srcDirs += [
                'src/customDir/test/kotlin'
        ]
        print(java.srcDirs)   // Clean
    }
}

অপারেটরের পে মনোযোগ +=এবং যদি আপনি চালানোর জন্য ইন্টিগ্রেশন পরীক্ষার পরিবর্তন চান testকরতে androidTest

জিএল

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.