বৈশিষ্ট্য লঞ্চ পতাকা মধ্যে পরীক্ষা কোড

বৈশিষ্ট্য লঞ্চ পতাকা প্রবর্তনের সাথে, নতুন পরীক্ষার নীতি রয়েছে যা আপনাকে অবশ্যই মেনে চলতে হবে:

  • আপনার পরীক্ষাগুলি অবশ্যই পতাকার সক্রিয় এবং অক্ষম উভয় আচরণকেই কভার করবে।
  • পরীক্ষার সময় পতাকার মান সেট করতে আপনাকে অবশ্যই অফিসিয়াল মেকানিজম ব্যবহার করতে হবে।
  • xTS পরীক্ষা পরীক্ষায় পতাকা মান ওভাররাইড করা উচিত নয়।

পরবর্তী বিভাগে এই নীতিগুলি মেনে চলার জন্য আপনাকে অবশ্যই ব্যবহার করতে হবে এমন অফিসিয়াল মেকানিজমগুলি প্রদান করে৷

আপনার পতাকাঙ্কিত কোড পরীক্ষা করুন

পরীক্ষার দৃশ্যকল্প মেকানিজম ব্যবহার করা হয়েছে
স্থানীয় পরীক্ষা যখন পতাকার মান প্রায়ই পরিবর্তিত হয় রানটাইমে পতাকার মান পরিবর্তন করুন- এ আলোচিত অ্যান্ড্রয়েড ডিবাগ ব্রিজ
স্থানীয় পরীক্ষা যখন পতাকার মান প্রায়ই পরিবর্তিত হয় না বৈশিষ্ট্য লঞ্চ পতাকা মান সেট আলোচনা হিসাবে পতাকা মান ফাইল
এন্ড-টু-এন্ড টেস্টিং যেখানে পতাকার মান পরিবর্তন হয় FeatureFlagTargetPreparer যেমন আলোচনা করা হয়েছে শেষ থেকে শেষ পরীক্ষা তৈরি করুন
ইউনিট পরীক্ষা যেখানে পতাকা মান পরিবর্তন @EnableFlags এবং @DisableFlags সাথে SetFlagsRule যেমন ইউনিট পরীক্ষা তৈরি করুন (জাভা এবং কোটলিন) বা ইউনিট পরীক্ষা তৈরি করুন (C এবং C++) এ আলোচনা করা হয়েছে
এন্ড-টু-এন্ড বা ইউনিট টেস্টিং যেখানে পতাকার মান পরিবর্তন করা যায় না CheckFlagsRule যেমন আলোচনা করা হয়েছে এন্ড-টু-এন্ড বা ইউনিট টেস্ট তৈরি করুন যেখানে পতাকার মান পরিবর্তন হয় না

শেষ থেকে শেষ পরীক্ষা তৈরি করুন

AOSP FeatureFlagTargetPreparer নামে একটি ক্লাস প্রদান করে, যা একটি ডিভাইসে এন্ড-টু-এন্ড টেস্টিং সক্ষম করে। এই ক্লাসটি ইনপুট হিসাবে পতাকা মান ওভাররাইড গ্রহণ করে, পরীক্ষা সম্পাদনের আগে ডিভাইস কনফিগারেশনে সেই পতাকাগুলি সেট করে এবং কার্যকর করার পরে পতাকাগুলি পুনরুদ্ধার করে।

আপনি পরীক্ষা মডিউল এবং পরীক্ষা কনফিগার স্তরে FeatureFlagTargetPreparer ক্লাসের কার্যকারিতা প্রয়োগ করতে পারেন।

একটি পরীক্ষা মডিউল কনফিগারেশনে FeatureFlagTargetPreparer প্রয়োগ করুন

একটি টেস্ট মডিউল কনফিগারেশনে FeatureFlagTargetPreparer প্রয়োগ করতে, AndroidTest.xml টেস্ট মডিউল কনফিগারেশন ফাইলে FeatureFlagTargetPreparer এবং ফ্ল্যাগ মান ওভাররাইড অন্তর্ভুক্ত করুন:

  <target_preparer class="com.android.tradefed.targetprep.FeatureFlagTargetPreparer">
        <option name="flag-value"
            value="permissions/com.android.permission.flags.device_aware_permission_grant=true"/>
        <option name="flag-value"
            value="virtual_devices/android.companion.virtual.flags.stream_permissions=true"/>
    </target_preparer>

কোথায়:

  • target.preparer class সবসময় com.android.tradefed.targetprep.FeatureFlagTargetPreparer এ সেট করা থাকে।
  • option হল ফ্ল্যাগ ওভাররাইড name সহ সর্বদা flag-value সেট করা হয় এবং value namespace/aconfigPackage.flagName=true|false এ সেট করা হয়।

পতাকা অবস্থার উপর ভিত্তি করে প্যারামিটারাইজড টেস্ট মডিউল তৈরি করুন

পতাকা অবস্থার উপর ভিত্তি করে প্যারামিটারাইজড টেস্ট মডিউল তৈরি করতে:

  1. AndroidTest.xml টেস্ট মডিউল কনফিগারেশন ফাইলে FeatureFlagTargetPreparer অন্তর্ভুক্ত করুন:

    <target_preparer class="com.android.tradefed.targetprep.FeatureFlagTargetPreparer" >
    
  2. একটি Android.bp বিল্ড ফাইলের test_module_config বিভাগে পতাকা মান বিকল্পগুলি নির্দিষ্ট করুন:

    android_test {
        name: "MyTest"
        ...
    }
    
    test_module_config {
        name: "MyTestWithMyFlagEnabled",
        base: "MyTest",
        ...
        options: [
            {name: "flag-value", value: "telephony/com.android.internal.telephony.flags.oem_enabled_satellite_flag=true"},
        ],
    }
    
    test_module_config {
        name: "MyTestWithMyFlagDisabled",
        base: "MyTest",
        ...
        options: [
            {name: "flag-value", value: "telephony/com.android.internal.telephony.flags.carrier_enabled_satellite_flag=true"},
        ],
    }
    

    options ফিল্ডে ফ্ল্যাগ ওভাররাইড থাকে যার name সবসময় flag-value সেট করা হয় এবং value namespace/aconfigPackage.flagName=true|false এ সেট করা হয়।

ইউনিট পরীক্ষা তৈরি করুন (জাভা এবং কোটলিন)

এই বিভাগটি জাভা এবং কোটলিন পরীক্ষায় ক্লাস এবং পদ্ধতি স্তরে (প্রতি-পরীক্ষায়) aconfig পতাকা মান ওভাররাইড করার পদ্ধতির বর্ণনা করে।

প্রচুর সংখ্যক পতাকা সহ একটি বড় কোডবেসে স্বয়ংক্রিয় ইউনিট পরীক্ষা লিখতে, এই পদক্ষেপগুলি অনুসরণ করুন:

  1. সমস্ত কোড শাখা পরীক্ষা করতে @EnableFlags এবং @DisableFlags টীকা সহ SetFlagsRule ক্লাস ব্যবহার করুন।
  2. সাধারণ পরীক্ষার বাগ এড়াতে SetFlagsRule.ClassRule পদ্ধতি ব্যবহার করুন।
  3. পতাকা কনফিগারেশনের একটি বিস্তৃত সেট জুড়ে আপনার ক্লাস পরীক্ষা করতে FlagsParameterization ব্যবহার করুন।

সমস্ত কোড শাখা পরীক্ষা করুন

ফ্ল্যাগগুলি অ্যাক্সেস করতে স্ট্যাটিক ক্লাস ব্যবহার করে এমন প্রকল্পগুলির জন্য, পতাকা মানগুলিকে ওভাররাইড করতে SetFlagsRule সহায়ক শ্রেণী প্রদান করা হয়। নিম্নলিখিত কোড স্নিপেট দেখায় কিভাবে SetFlagsRule অন্তর্ভুক্ত করতে হয় এবং একসাথে একাধিক ফ্ল্যাগ সক্ষম করতে হয়:

  import android.platform.test.annotations.EnableFlags;
  import android.platform.test.flag.junit.SetFlagsRule;
  import com.example.android.aconfig.demo.flags.Flags;
  ...
    @Rule public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();

    @Test
    @EnableFlags({Flags.FLAG_FLAG_FOO, Flags.FLAG_FLAG_BAR})
    public void test_flag_foo_and_flag_bar_turned_on() {
    ...
    }

কোথায়:

  • @Rule হল একটি টীকা যা SetFlagsRule ক্লাসের পতাকা-JUnit নির্ভরতা যোগ করতে ব্যবহৃত হয়।
  • SetFlagsRule হল সাহায্যকারী শ্রেণী যা পতাকা মান ওভাররাইড করার জন্য প্রদান করা হয়। কিভাবে SetFlagsRule ডিফল্ট মান নির্ধারণ করে সে সম্পর্কে তথ্যের জন্য, ডিভাইসের ডিফল্ট মান দেখুন।
  • @EnableFlags হল একটি টীকা যা পতাকা নামগুলির একটি নির্বিচারে সংখ্যা গ্রহণ করে। পতাকা নিষ্ক্রিয় করার সময়, @DisableFlags ব্যবহার করুন। আপনি একটি পদ্ধতি বা একটি ক্লাস এই টীকা প্রয়োগ করতে পারেন.

সম্পূর্ণ পরীক্ষার প্রক্রিয়ার জন্য পতাকা মান সেট করুন, SetFlagsRule দিয়ে শুরু করুন, যা পরীক্ষার যেকোনো @Before -অনুষ্টিত সেটআপ পদ্ধতির আগে। SetFlagsRule শেষ হলে ফ্ল্যাগ মানগুলি তাদের আগের অবস্থায় ফিরে আসে, যেটি যেকোন @After অ্যানোটেটেড সেটআপ পদ্ধতির পরে।

পতাকা সঠিকভাবে সেট করা হয়েছে তা নিশ্চিত করুন

পূর্বে উল্লিখিত হিসাবে, SetFlagsRule JUnit @Rule টীকা-এর সাথে ব্যবহার করা হয়, যার মানে SetFlagsRule পরীক্ষা ক্লাসের কনস্ট্রাক্টর, বা যেকোনো @BeforeClass বা @AfterClass - টীকা পদ্ধতির সময় আপনার পতাকা সঠিকভাবে সেট করা হয়েছে তা নিশ্চিত করতে পারে না।

পরীক্ষার ফিক্সচারগুলি সঠিক শ্রেণী মান দিয়ে তৈরি করা হয়েছে তা নিশ্চিত করতে, SetFlagsRule.ClassRule পদ্ধতি ব্যবহার করুন যাতে আপনার ফিক্সচারগুলি @Before -অ্যানোটেটেড সেটআপ পদ্ধতি না হওয়া পর্যন্ত তৈরি না হয়:

  import android.platform.test.annotations.EnableFlags;
  import android.platform.test.flag.junit.SetFlagsRule;
  import com.example.android.aconfig.demo.flags.Flags;

  class ExampleTest {
    @ClassRule public static final SetFlagsRule.ClassRule mClassRule = new SetFlagsRule.ClassRule();
    @Rule public final SetFlagsRule mSetFlagsRule = mClassRule.createSetFlagsRule();

    private DemoClass underTest = new DemoClass();

    @Test
    @EnableFlags(Flags.FLAG_FLAG_FOO)
    public void test_flag_foo_turned_on() {
      ...
    }
  }

SetFlagsRule.ClassRule ক্লাস নিয়ম যোগ করার মাধ্যমে, test_flag_foo_turned_on চালানোর আগে ব্যর্থ হয় যখন FLAG_FLAG_FOO DemoClass এর কনস্ট্রাক্টর পড়ে।

যদি আপনার পুরো ক্লাসের একটি পতাকা সক্ষম করার প্রয়োজন হয়, তাহলে @EnableFlags টীকাটিকে ক্লাস লেভেলে নিয়ে যান (ক্লাস ঘোষণার আগে)। ক্লাস লেভেলে অ্যানোটেশন সরানো SetFlagsRule.ClassRule পরীক্ষা ক্লাসের কনস্ট্রাক্টরের সময়, বা যেকোনো @BeforeClass বা @AfterClass - টীকা পদ্ধতির সময় পতাকা সঠিকভাবে সেট করা হয়েছে তা নিশ্চিত করতে দেয়।

একাধিক পতাকা কনফিগারেশন জুড়ে পরীক্ষা চালান

যেহেতু আপনি প্রতি-পরীক্ষার ভিত্তিতে পতাকা মান সেট করতে পারেন, আপনি একাধিক পতাকা কনফিগারেশন জুড়ে পরীক্ষা চালানোর জন্য প্যারামিটারাইজেশন ব্যবহার করতে পারেন:

...
import com.example.android.aconfig.demo.flags.Flags;
...

@RunWith(ParameterizedAndroidJunit4::class)
class FooBarTest {
    @Parameters(name = "{0}")
    public static List<FlagsParameterization> getParams() {
        return FlagsParameterization.allCombinationsOf(Flags.FLAG_FOO, Flags.FLAG_BAR);
    }

    @Rule
    public SetFlagsRule mSetFlagsRule;

    public FooBarTest(FlagsParameterization flags) {
        mSetFlagsRule = new SetFlagsRule(flags);
    }

    @Test public void fooLogic() {...}

    @DisableFlags(Flags.FLAG_BAR)
    @Test public void legacyBarLogic() {...}

    @EnableFlags(Flags.FLAG_BAR)
    @Test public void newBarLogic() {...}
}

মনে রাখবেন যে SetFlagsRule এর সাথে, কিন্তু প্যারামিটারাইজেশন ছাড়াই, এই ক্লাসটি তিনটি পরীক্ষা চালায় ( fooLogic , legacyBarLogic , এবং newBarLogic )। ডিভাইসে FLAG_FOO এবং FLAG_BAR এর মান সেট করা যাই হোক না কেন fooLogic পদ্ধতি চলে।

যখন প্যারামিটারাইজেশন যোগ করা হয়, তখন FlagsParameterization.allCombinationsOf পদ্ধতিটি FLAG_FOO এবং FLAG_BAR পতাকার সমস্ত সম্ভাব্য সমন্বয় তৈরি করে:

  • FLAG_FOO true এবং FLAG_BAR true
  • FLAG_FOO true এবং FLAG_BAR false
  • FLAG_FOO false এবং FLAG_BAR true
  • FLAG_FOO মিথ্যা এবং FLAG_BAR false

সরাসরি পতাকার মান পরিবর্তন করার পরিবর্তে, @DisableFlags এবং @EnableFlags টীকা প্যারামিটার শর্তের উপর ভিত্তি করে পতাকা মান পরিবর্তন করে। উদাহরণস্বরূপ, legacyBarLogic শুধুমাত্র তখনই চলে যখন FLAG_BAR অক্ষম থাকে, যা চারটি পতাকার সংমিশ্রণের মধ্যে দুটিতে ঘটে। legacyBarLogic অন্য দুটি সংমিশ্রণের জন্য বাদ দেওয়া হয়েছে।

আপনার পতাকাগুলির জন্য প্যারামিটারাইজেশন তৈরি করার জন্য দুটি পদ্ধতি রয়েছে:

  • FlagsParameterization.allCombinationsOf(String...) প্রতিটি পরীক্ষার 2^n রান নির্বাহ করে। উদাহরণস্বরূপ, একটি পতাকা 2x পরীক্ষা চালায় বা চারটি পতাকা 16x পরীক্ষা চালায়।

  • FlagsParameterization.progressionOf(String...) প্রতিটি পরীক্ষার n+1 রান নির্বাহ করে। উদাহরণস্বরূপ, একটি পতাকা 2x পরীক্ষা চালায় এবং চারটি পতাকা 5x পতাকা চালায়।

ইউনিট পরীক্ষা তৈরি করুন (C এবং C++)

AOSP-এ GoogleTest ফ্রেমওয়ার্কে লেখা C এবং C++ পরীক্ষার জন্য পতাকা মান ম্যাক্রো অন্তর্ভুক্ত রয়েছে।

  1. আপনার পরীক্ষার উত্সে, ম্যাক্রো সংজ্ঞা এবং কনফিগার-জেনারেটেড লাইব্রেরি অন্তর্ভুক্ত করুন:

    #include <flag_macros.h>
    #include "android_cts_flags.h"
    
  2. আপনার পরীক্ষার উত্সে, আপনার পরীক্ষার ক্ষেত্রে TEST এবং TESTF ম্যাক্রো ব্যবহার করার পরিবর্তে, TEST_WITH_FLAGS এবং TEST_F_WITH_FLAGS ব্যবহার করুন :

    #define TEST_NS android::cts::flags::tests
    
    ...
    
    TEST_F_WITH_FLAGS(
      TestFWithFlagsTest,
      requies_disabled_flag_enabled_skip,
      REQUIRES_FLAGS_DISABLED(ACONFIG_FLAG(TEST_NS, readwrite_enabled_flag))
    ) {
      TestFail();
    }
    
    ...
    
    TEST_F_WITH_FLAGS(
      TestFWithFlagsTest,
      multi_flags_for_same_state_skip,
      REQUIRES_FLAGS_ENABLED(
          ACONFIG_FLAG(TEST_NS, readwrite_enabled_flag),
          LEGACY_FLAG(aconfig_flags.cts, TEST_NS, readwrite_disabled_flag)
      )
    ) {
      TestFail();
    }
    
    ...
    
    TEST_WITH_FLAGS(
      TestWithFlagsTest,
      requies_disabled_flag_enabled_skip,
      REQUIRES_FLAGS_DISABLED(
          LEGACY_FLAG(aconfig_flags.cts, TEST_NS, readwrite_enabled_flag))
    ) {
      FAIL();
    }
    
    ...
    
    TEST_WITH_FLAGS(
      TestWithFlagsTest,
      requies_enabled_flag_enabled_executed,
      REQUIRES_FLAGS_ENABLED(ACONFIG_FLAG(TEST_NS, readwrite_enabled_flag))
    ) {
      TestWithFlagsTestHelper::executed_tests.insert(
          "requies_enabled_flag_enabled_executed");
    }
    

    কোথায়:

    • TEST এবং TEST_F ম্যাক্রোর পরিবর্তে TEST_WITH_FLAGS এবং TEST_F_WITH_FLAGS ম্যাক্রো ব্যবহার করা হয়।
    • REQUIRES_FLAGS_ENABLED ফিচার রিলিজ পতাকার একটি সেট সংজ্ঞায়িত করে যা অবশ্যই সক্ষম শর্ত পূরণ করতে হবে। আপনি এই পতাকাগুলি ACONFIG_FLAG বা LEGACY_FLAG ম্যাক্রোতে লিখতে পারেন৷
    • REQUIRES_FLAGS_DISABLED বৈশিষ্ট্য ফ্ল্যাগগুলির একটি সেট সংজ্ঞায়িত করে যা অক্ষম শর্ত পূরণ করতে হবে৷ আপনি এই পতাকাগুলি ACONFIG_FLAG বা LEGACY_FLAG ম্যাক্রোতে লিখতে পারেন৷
    • ACONFIG_FLAG (TEST_NS, readwrite_enabled_flag) একটি কনফিগ ফাইলে সংজ্ঞায়িত পতাকার জন্য ব্যবহৃত একটি ম্যাক্রো। এই ম্যাক্রো একটি নেমস্পেস ( TEST_NS ) এবং একটি পতাকা নাম ( readwrite_enabled_flag ) গ্রহণ করে।
    • LEGACY_FLAG(aconfig_flags.cts, TEST_NS, readwrite_disabled_flag) একটি ম্যাক্রো যা ডিফল্টরূপে ডিভাইস কনফিগারে সেট করা পতাকার জন্য ব্যবহৃত হয়।
  3. আপনার Android.bp বিল্ড ফাইলে, একটি কনফিগার-জেনারেটেড লাইব্রেরি এবং প্রাসঙ্গিক ম্যাক্রো লাইব্রেরিগুলিকে পরীক্ষা নির্ভরতা হিসেবে যোগ করুন:

    cc_test {
      name: "FlagMacrosTests",
      srcs: ["src/FlagMacrosTests.cpp"],
      static_libs: [
          "libgtest",
          "libflagtest",
          "my_aconfig_lib",
      ],
      shared_libs: [
          "libbase",
          "server_configurable_flags",
      ],
      test_suites: ["general-tests"],
      ...
    }
    
  4. এই কমান্ড দিয়ে স্থানীয়ভাবে পরীক্ষা চালান:

    atest FlagMacrosTests
    

    যদি my_namespace.android.myflag.tests.my_flag অক্ষম করা থাকে, তাহলে পরীক্ষার ফলাফল হল:

    [1/2] MyTest#test1: IGNORED (0ms)
    [2/2] MyTestF#test2: PASSED (0ms)
    

    যদি ফ্ল্যাগ my_namespace.android.myflag.tests.my_flag সক্ষম করা থাকে, তাহলে পরীক্ষার ফলাফল হল:

    [1/2] MyTest#test1: PASSED (0ms)
    [2/2] MyTestF#test2: IGNORED (0ms)
    

এন্ড-টু-এন্ড বা ইউনিট পরীক্ষা তৈরি করুন যেখানে পতাকার মান পরিবর্তন হয় না

পরীক্ষার ক্ষেত্রে যেখানে আপনি পতাকাগুলিকে ওভাররাইড করতে পারবেন না এবং শুধুমাত্র বর্তমান পতাকা অবস্থার উপর ভিত্তি করে পরীক্ষাগুলি ফিল্টার করতে পারেন, RequiresFlagsEnabled এবং RequiresFlagsDisabled টীকা সহ CheckFlagsRule নিয়মটি ব্যবহার করুন৷

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

  1. আপনার পরীক্ষার কোডে, পরীক্ষা ফিল্টারিং প্রয়োগ করতে CheckFlagsRule ব্যবহার করুন। এছাড়াও, আপনার পরীক্ষার জন্য ফ্ল্যাগ প্রয়োজনীয়তা নির্দিষ্ট করতে জাভা টীকা ব্যবহার করুন RequiresFlagsEnabled এবং RequiredFlagsDisabled

    ডিভাইস-সাইড পরীক্ষা DeviceFlagsValueProvider ক্লাস ব্যবহার করে:

    @RunWith(JUnit4.class)
    public final class FlagAnnotationTest {
      @Rule
      public final CheckFlagsRule mCheckFlagsRule =
              DeviceFlagsValueProvider.createCheckFlagsRule();
    
      @Test
      @RequiresFlagsEnabled(Flags.FLAG_FLAG_NAME_1)
      public void test1() {}
    
      @Test
      @RequiresFlagsDisabled(Flags.FLAG_FLAG_NAME_1)
      public void test2() {}
    }
    

    হোস্ট-সাইড পরীক্ষা HostFlagsValueProvider ক্লাস ব্যবহার করে:

    @RunWith(DeviceJUnit4ClassRunner.class)
    public final class FlagAnnotationTest extends BaseHostJUnit4Test {
      @Rule
      public final CheckFlagsRule mCheckFlagsRule =
              HostFlagsValueProvider.createCheckFlagsRule(this::getDevice);
    
      @Test
      @RequiresFlagsEnabled(Flags.FLAG_FLAG_NAME_1)
      public void test1() {}
    
      @Test
      @RequiresFlagsDisabled(Flags.FLAG_FLAG_NAME_1)
      public void test2() {}
    }
    
  2. আপনার পরীক্ষার জন্য বিল্ড ফাইলের static_libs বিভাগে jflag-unit এবং কনফিগ-উত্পন্ন লাইব্রেরি যোগ করুন:

    android_test {
        name: "FlagAnnotationTests",
        srcs: ["*.java"],
        static_libs: [
            "androidx.test.rules",
            "my_aconfig_lib",
            "flag-junit",
            "platform-test-annotations",
        ],
        test_suites: ["general-tests"],
    }
    
  3. স্থানীয়ভাবে পরীক্ষা চালানোর জন্য নিম্নলিখিত কমান্ড ব্যবহার করুন:

    atest FlagAnnotationTests
    

    যদি পতাকা পতাকা Flags.FLAG_FLAG_NAME_1 অক্ষম করা হয়, পরীক্ষার ফলাফল হল:

    [1/2] com.cts.flags.FlagAnnotationTest#test1: ASSUMPTION_FAILED (10ms)
    [2/2] com.cts.flags.FlagAnnotationTest#test2: PASSED (2ms)
    

    অন্যথায় পরীক্ষার ফলাফল হল:

    [1/2] com.cts.flags.FlagAnnotationTest#test1: PASSED (2ms)
    [2/2] com.cts.flags.FlagAnnotationTest#test2: ASSUMPTION_FAILED (10ms)
    

ডিভাইসের ডিফল্ট মান

আরম্ভকৃত SetFlagsRule ডিভাইস থেকে পতাকা মান ব্যবহার করে। যদি ডিভাইসে ফ্ল্যাগ মান ওভাররাইড না করা হয়, যেমন adb এর সাথে, তাহলে ডিফল্ট মান বিল্ডের রিলিজ কনফিগারেশনের মতোই। যদি ডিভাইসের মান ওভাররাইড করা হয়, তাহলে SetFlagsRule ডিফল্ট হিসাবে ওভাররাইড মান ব্যবহার করে।

যদি একই পরীক্ষা বিভিন্ন রিলিজ কনফিগারেশনের অধীনে সম্পাদিত হয়, তাহলে SetFlagsRule সাথে স্পষ্টভাবে সেট না করা পতাকার মান পরিবর্তিত হতে পারে।

প্রতিটি পরীক্ষার পরে, SetFlagsRule Flags FeatureFlags ইন্সট্যান্সটিকে তার আসল FeatureFlagsImpl এ পুনরুদ্ধার করে, যাতে এটি অন্যান্য পরীক্ষার পদ্ধতি এবং ক্লাসে পার্শ্বপ্রতিক্রিয়া না করে।