কীভাবে পিএইচপুনিতে পরীক্ষা ছেড়ে যাবে?


89

আমি জেনকিন্সের সাথে সম্পর্কিত phpunit ব্যবহার করছি এবং এক্সএমএল ফাইলে কনফিগারেশনটি সেট করে কিছু পরীক্ষা ছেড়ে যেতে চাই phpunit.xml

আমি জানি যে আমি কমান্ড লাইনে ব্যবহার করতে পারি:

phpunit --filter testStuffThatBrokeAndIOnlyWantToRunThatOneSingleTest

<filters>ট্যাগটি কেবল কোড-কভারেজের জন্য যেহেতু আমি কীভাবে এটি এক্সএমএল ফাইলটিতে অনুবাদ করব ?

আমি সমস্ত পরীক্ষা বাদে চালাতে চাই testStuffThatAlwaysBreaks


4
কো: পরীক্ষা ঠিক করার কী আছে? বিটিডব্লিউ, হাই থেকে ওয়েললি ;-)
জেরকামস

আমি পরীক্ষাগুলি লিখিনি, এটি অপ্রাসঙ্গিক কিছু, এবং মূল ফাইলগুলিও পরিবর্তন করতে চাই না
Flype

সন্দেহজনকভাবে আপনি এটি করতে পারেন। এটি একটি খুব অদ্ভুত প্রয়োজনীয়তা
এয়ার্কস

পিএস: আপনি ফিল্টার উল্লেখ করেছেন - তবে এটি আপনাকে সাহায্য করতে পারে নি, কারণ এটি সমস্ত পথ বাদ দেয়। অন্যথায় <exclude>- আপনার জন্য কাজটি করবে
zerkms

আপনি কি প্রস্তাবিত phpunit.xML.dist ফাইল পোস্ট করতে পারেন?
Flype

উত্তর:


170

টেস্টগুলি এড়িয়ে যাওয়ার দ্রুত এবং সহজ উপায় যা হয় ভেঙে গেছে বা আপনাকে পরে কাজ চালিয়ে যাওয়া দরকার তা হল আপনার ব্যক্তিগত ইউনিট পরীক্ষার শীর্ষে নিম্নলিখিতটি যুক্ত করা:

$this->markTestSkipped('must be revisited.');

আপনি সর্বদা এক্সএমএল কনফিগার ফাইলে ডিরেক্টরি বা পরীক্ষা যুক্ত করতে পারেন, তবে এটি যদি কোনও নিয়ামক বা অনুরূপ হয় যা সত্যিই খুব ব্যবহারিক নয় কারণ আপনার সম্ভবত সেই ফাইলটিতে কয়েক ডজন অন্যান্য পরীক্ষা রয়েছে। আমার ধারণা ইউনিট পরীক্ষায় আপনার যদি অ্যাক্সেস না থাকে তবে আমি কেন তা বুঝতে পেরেছি তা নিশ্চিত নই তবে আপনার বাদ দেওয়া ছাড়া আপনার আর কোনও উপায় নেই।
jsteinmann

6
যেহেতু এটি একটি স্ট্যাটিক পদ্ধতি (কমপক্ষে পিএইচপিউইনিত 3 এ), এবং কিছু শ্রেণি দেরীতে স্থির বাইন্ডিং আফাইক ব্যবহার static::markTestSkipped('');করে , আপনার পরিবর্তে এটি ব্যবহার করা উচিত $this->। এটি আরও নতুন পিএইচপি সংস্করণগুলিতে একটি সতর্কতা তৈরি করবে। স্বাক্ষর: public static function markTestSkipped($message = '')
ড্যানিয়েল ডাব্লু।

পূর্ণ ইউনিট পরীক্ষা ফাইলের আরও ভাল উদাহরণের প্রয়োজন। শুধু একটি স্নিপেট নয়।
লাইগামার

পছন্দ করুন সরকারী phpunit ম্যানুয়াল দেখাচ্ছে উদাহরণ রয়েছে$this->markTestSkipped()
nulll

@ নাল আপনি 6.5 এর সোর্সকোডে দেখতে পাচ্ছেন , markTestSkipped()এটি এখনও একটি স্থির পদ্ধতি।
ড্যানিয়েল ডাব্লু।

31

আপনি যদি পুরো ফাইলটিকে উপেক্ষা করে মোকাবেলা করতে পারেন

<?xml version="1.0" encoding="UTF-8"?>

<phpunit>

    <testsuites>
        <testsuite name="foo">
            <directory>./tests/</directory>
            <exclude>./tests/path/to/excluded/test.php</exclude>
                ^-------------
        </testsuite>
    </testsuites>

</phpunit>

এটিই আমি চেষ্টা করেছি, এখনও এটি বলছে 893 টি টেস্ট ছাড়াই <exclude>এবং 893 টেস্টগুলি<exclude>
ফিলিপ

4
পরীক্ষাগুলি চালাতে প্রায় 20 মিনিট সময় নেয়, এটির কতগুলি পরীক্ষা চলবে তা দেখার কোনও সহজ উপায় আছে? বর্তমানে, আমাকে প্রথম সারিটি শেষ না হওয়া পর্যন্ত অপেক্ষা করতে হবে....... 63 / 893 ( 7%)
ফিলিপ

4
@ ফ্লাইপ: তাহলে আপনি সম্ভবত ভুল পথটি নির্দিষ্ট করেছেন। এটি আমর জন্য ভাল কাজ করছে. পরীক্ষার গণনা পাওয়া সম্ভব কিনা তা নিশ্চিত নন। পিএস: ইউনিট পরীক্ষা এত দিন চালানো উচিত নয়। আমি @groupতাদের প্রকৃতির দ্বারা টীকা এবং বিভক্ত পরীক্ষাগুলি ব্যবহার করার পরামর্শ দেব
zerkms

21

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

protected function setUp()
{
    if (your_custom_condition) {
        $this->markTestSkipped('all tests in this file are invactive for this server configuration!');
    }
}

আপনার_কাস্টম_কন্ডিশনটি কিছু স্থির শ্রেণি পদ্ধতি / বৈশিষ্ট্যের মধ্য দিয়ে যেতে পারে, একটি ধ্রুবক phpunit বুটস্ট্র্যাপ ফাইল বা এমনকি একটি বৈশ্বিক ভেরিয়েবলের মধ্যে সংজ্ঞায়িত হয়।


একটি কি Configবর্গ? আমি এটি কোথায় রাখব?

@ ক্রনফাই এটি কোনও গ্লোবাল স্কোপ অ্যাক্সেসযোগ্য ক্লাস (সিঙ্গলটন / রেজিস্ট্রার ডিজাইন প্যাটার্ন) বা phpunit এর বুটস্ট্র্যাপ ফাইলটিতে বৈশ্বিক পরিবর্তনশীল সেটও হতে পারে। মূলত যুক্তিটি হ'ল: (যদি ($ টেস্টফ্রান্সথিস ফাইলশল্ডবিস্কিপড)) $-this-> মার্কটেষ্টস্টিপড (...); }
কনরাড গাজ্জোস্কি

শর্তসাপেক্ষে অপসারণ করুন এবং আপনার উত্তরটি সরাসরি এগিয়ে থাকবে ... "পুরো ফাইলটি এড়াতে সেটআপের ভিতরে মার্কস্টেস্টস্কিপড"
স্পার্ক

4
@ স্পার্ক আমি আপনার বক্তব্যটি দেখতে পাচ্ছি তবে আমি পুরো পরীক্ষার শ্রেণীর শর্তসাপেক্ষে এড়িয়ে যাওয়ার উপায় সরবরাহ করছিলাম । আমি এটিকে কিছুটা পরিবর্তন করেছি, আমার নিয়মকে সাধারণ নিয়মের পক্ষে করার পদ্ধতিটি সরিয়ে দিয়ে।
কনরাড গাজ্জোস্কি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.