বৈশিষ্ট্য লঞ্চ পতাকা প্রবর্তনের সাথে, নতুন পরীক্ষার নীতি রয়েছে যা আপনাকে অবশ্যই মেনে চলতে হবে:
- আপনার পরীক্ষাগুলি অবশ্যই পতাকার সক্রিয় এবং অক্ষম উভয় আচরণকেই কভার করবে।
- পরীক্ষার সময় পতাকার মান সেট করতে আপনাকে অবশ্যই অফিসিয়াল মেকানিজম ব্যবহার করতে হবে।
- 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
এ সেট করা হয়।
পতাকা অবস্থার উপর ভিত্তি করে প্যারামিটারাইজড টেস্ট মডিউল তৈরি করুন
পতাকা অবস্থার উপর ভিত্তি করে প্যারামিটারাইজড টেস্ট মডিউল তৈরি করতে:
AndroidTest.xml
টেস্ট মডিউল কনফিগারেশন ফাইলেFeatureFlagTargetPreparer
অন্তর্ভুক্ত করুন:<target_preparer class="com.android.tradefed.targetprep.FeatureFlagTargetPreparer" >
একটি
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 পতাকা মান ওভাররাইড করার পদ্ধতির বর্ণনা করে।
প্রচুর সংখ্যক পতাকা সহ একটি বড় কোডবেসে স্বয়ংক্রিয় ইউনিট পরীক্ষা লিখতে, এই পদক্ষেপগুলি অনুসরণ করুন:
- সমস্ত কোড শাখা পরীক্ষা করতে
@EnableFlags
এবং@DisableFlags
টীকা সহSetFlagsRule
ক্লাস ব্যবহার করুন। - সাধারণ পরীক্ষার বাগ এড়াতে
SetFlagsRule.ClassRule
পদ্ধতি ব্যবহার করুন। - পতাকা কনফিগারেশনের একটি বিস্তৃত সেট জুড়ে আপনার ক্লাস পরীক্ষা করতে
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++ পরীক্ষার জন্য পতাকা মান ম্যাক্রো অন্তর্ভুক্ত রয়েছে।
আপনার পরীক্ষার উত্সে, ম্যাক্রো সংজ্ঞা এবং কনফিগার-জেনারেটেড লাইব্রেরি অন্তর্ভুক্ত করুন:
#include <flag_macros.h> #include "android_cts_flags.h"
আপনার পরীক্ষার উত্সে, আপনার পরীক্ষার ক্ষেত্রে
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)
একটি ম্যাক্রো যা ডিফল্টরূপে ডিভাইস কনফিগারে সেট করা পতাকার জন্য ব্যবহৃত হয়।
-
আপনার
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"], ... }
এই কমান্ড দিয়ে স্থানীয়ভাবে পরীক্ষা চালান:
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
নিয়মটি ব্যবহার করুন৷
নিম্নলিখিত পদক্ষেপগুলি আপনাকে দেখায় কিভাবে একটি এন্ড-টু-এন্ড বা ইউনিট পরীক্ষা তৈরি এবং চালাতে হয় যেখানে পতাকা মান ওভাররাইড করা যাবে না:
আপনার পরীক্ষার কোডে, পরীক্ষা ফিল্টারিং প্রয়োগ করতে
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() {} }
আপনার পরীক্ষার জন্য বিল্ড ফাইলের
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"], }
স্থানীয়ভাবে পরীক্ষা চালানোর জন্য নিম্নলিখিত কমান্ড ব্যবহার করুন:
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
এ পুনরুদ্ধার করে, যাতে এটি অন্যান্য পরীক্ষার পদ্ধতি এবং ক্লাসে পার্শ্বপ্রতিক্রিয়া না করে।