এন্ড-টু-এন্ড TF পরীক্ষার উদাহরণ

এই টিউটোরিয়ালটি আপনাকে একটি "হ্যালো ওয়ার্ল্ড" ট্রেড ফেডারেশন (ট্রেডফেড বা টিএফ) পরীক্ষা কনফিগারেশন তৈরি করার মাধ্যমে গাইড করে এবং আপনাকে টিএফ ফ্রেমওয়ার্কের একটি হ্যান্ডস-অন পরিচিতি দেয়। একটি উন্নয়ন পরিবেশ থেকে শুরু করে, আপনি একটি সাধারণ কনফিগারেশন তৈরি করবেন এবং বৈশিষ্ট্য যোগ করবেন।

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

  • বিকাশকারীর জন্য ডি
  • আমি ইন্টিগ্রেটরের জন্য
  • টেস্ট রানার জন্য আর

টিউটোরিয়ালটি সম্পূর্ণ করার পরে, আপনার একটি কার্যকরী TF কনফিগারেশন থাকবে এবং TF কাঠামোর অনেক গুরুত্বপূর্ণ ধারণা বুঝতে পারবেন।

ট্রেড ফেডারেশন গঠন করুন

TF ডেভেলপমেন্ট এনভায়রনমেন্ট সেট আপ করার বিষয়ে বিস্তারিত জানার জন্য, মেশিন সেটআপ দেখুন। এই টিউটোরিয়ালের বাকি অংশটি ধরে নেয় যে আপনার একটি শেল খোলা আছে যা টিএফ পরিবেশে আরম্ভ করা হয়েছে।

সরলতার জন্য, এই টিউটোরিয়ালটি TF ফ্রেমওয়ার্ক কোর লাইব্রেরিতে একটি কনফিগারেশন এবং এর ক্লাস যোগ করার চিত্র তুলে ধরেছে। ট্রেডফেড JAR কম্পাইল করে, তারপর সেই JAR-এর বিপরীতে আপনার মডিউল কম্পাইল করে সোর্স ট্রির বাইরে মডিউল তৈরি করার জন্য এটিকে বাড়ানো যেতে পারে।

একটি পরীক্ষা ক্লাস তৈরি করুন (D)

একটি হ্যালো ওয়ার্ল্ড টেস্ট তৈরি করা যাক যা শুধু stdout-এ একটি বার্তা ডাম্প করে। একটি ট্রেডফেড পরীক্ষা সাধারণত IRemoteTest ইন্টারফেস প্রয়োগ করে। এখানে HelloWorldTest এর জন্য একটি বাস্তবায়ন রয়েছে:

package com.android.tradefed.example;

import com.android.tradefed.device.DeviceNotAvailableException;
import com.android.tradefed.invoker.TestInformation;
import com.android.tradefed.log.LogUtil.CLog;
import com.android.tradefed.result.ITestInvocationListener;
import com.android.tradefed.testtype.IRemoteTest;

public class HelloWorldTest implements IRemoteTest {
    @Override
    public void run(TestInformation testInfo, ITestInvocationListener listener) throws DeviceNotAvailableException {
        CLog.i("Hello, TF World!");
    }
}

এই নমুনা কোডটি <tree>/tools/tradefederation/core/src/com/android/tradefed/example/HelloWorldTest.java এ সংরক্ষণ করুন এবং আপনার শেল থেকে ট্রেডফেড পুনর্নির্মাণ করুন:

m -jN

উল্লেখ্য যে উপরের উদাহরণে CLog.i কনসোলে আউটপুট নির্দেশ করতে ব্যবহৃত হয়। ট্রেড ফেডারেশনে লগ ইন করার আরও তথ্য লগিং (D, I, R) এ বর্ণিত আছে।

বিল্ড সফল না হলে, আপনি একটি ধাপ মিস করেননি তা নিশ্চিত করতে মেশিন সেটআপের সাথে পরামর্শ করুন।

একটি কনফিগারেশন তৈরি করুন (I)

ট্রেড ফেডারেশন পরীক্ষাগুলিকে একটি কনফিগারেশন তৈরি করে এক্সিকিউটেবল করা হয়, একটি এক্সএমএল ফাইল যা ট্রেডফেডকে নির্দেশ দেয় কোন পরীক্ষা (বা পরীক্ষা) চালানো হবে, সেইসাথে অন্য কোন মডিউলগুলি চালানো হবে এবং কোন ক্রমে।

আমাদের HelloWorldTest এর জন্য একটি নতুন কনফিগারেশন তৈরি করতে দিন (HelloWorldTest-এর পুরো ক্লাসের নাম নোট করুন):

<configuration description="Runs the hello world test">
    <test class="com.android.tradefed.example.HelloWorldTest" />
</configuration>

আপনার স্থানীয় ফাইল সিস্টেমের যে কোনো জায়গায় একটি helloworld.xml ফাইলে এই ডেটা সংরক্ষণ করুন (যেমন /tmp/helloworld.xml )। TF কনফিগারেশন এক্সএমএল ফাইল (ওরফে কনফিগারেশন ) পার্স করবে, প্রতিফলন ব্যবহার করে নির্দিষ্ট ক্লাস লোড করবে, এটিকে ইনস্ট্যান্টিয়েট করবে, এটিকে একটি IRemoteTest এ কাস্ট করবে এবং এর run পদ্ধতিতে কল করবে।

কনফিগার চালান (R)

আপনার শেল থেকে, ট্রেডফেড কনসোল চালু করুন:

tradefed.sh

নিশ্চিত করুন যে একটি ডিভাইস হোস্ট মেশিনের সাথে সংযুক্ত এবং ট্রেডফেডের কাছে দৃশ্যমান:

tf> list devices
Serial            State      Product   Variant   Build   Battery
004ad9880810a548  Available  mako      mako      JDQ39   100

run <config> কনসোল কমান্ড ব্যবহার করে কনফিগারেশন চালানো যেতে পারে। চেষ্টা করুন:

tf> run /tmp/helloworld.xml
05-12 13:19:36 I/TestInvocation: Starting invocation for target stub on build 0 on device 004ad9880810a548
Hello, TF World!

আপনার দেখতে হবে "হ্যালো, টিএফ ওয়ার্ল্ড!" টার্মিনালে আউটপুট।

আপনি নিশ্চিত করতে পারেন যে কনসোল প্রম্পটে list invocations বা li ব্যবহার করে একটি কমান্ড চলছে এবং এটি কিছুই প্রিন্ট করবে না। কমান্ডগুলি বর্তমানে চলমান থাকলে, তারা নিম্নরূপ প্রদর্শন করে:

tf >l i
Command Id  Exec Time  Device       State
10          0m:00      [876X00GNG]  running stub on build(s) 'BuildInfo{bid=0, target=stub, serial=876X00GNG}'

ক্লাসপথে কনফিগার যোগ করুন (D, I, R)

স্থাপনার সুবিধার জন্য, আপনি ট্রেডফেড JAR-এ কনফিগারগুলি বান্ডেল করতে পারেন। Tradefed স্বয়ংক্রিয়ভাবে ক্লাসপথে কনফিগার ফোল্ডারে রাখা সমস্ত কনফিগারেশনকে স্বীকৃতি দেয়।

ব্যাখ্যা করার জন্য, helloworld.xml ফাইলটিকে ট্রেডফেড কোর লাইব্রেরিতে নিয়ে যান ( <tree>/tools/tradefederation/core/res/config/example/helloworld.xml )। ট্রেডফেড পুনর্নির্মাণ করুন, ট্রেডফেড কনসোলটি পুনরায় চালু করুন, তারপর ট্রেডফেডকে ক্লাসপথ থেকে কনফিগারেশনের তালিকা প্রদর্শন করতে বলুন:

tf> list configs
[…]
example/helloworld: Runs the hello world test

আপনি এখন ব্যবহার করে helloworld কনফিগারেশন চালাতে পারেন:

tf> run example/helloworld
05-12 13:21:21 I/TestInvocation: Starting invocation for target stub on build 0 on device 004ad9880810a548
Hello, TF World!

একটি ডিভাইসের সাথে ইন্টারঅ্যাক্ট (D, R)

এখন পর্যন্ত, আমাদের HelloWorldTest আকর্ষণীয় কিছু করছে না। Tradefed-এর বিশেষত্ব হল Android ডিভাইস ব্যবহার করে পরীক্ষা চালানো, তাই পরীক্ষায় একটি Android ডিভাইস যোগ করা যাক।

IRemoteTest#run মেথড কল করার সময় ফ্রেমওয়ার্ক দ্বারা প্রদত্ত TestInformation ব্যবহার করে টেস্টগুলি একটি Android ডিভাইসের রেফারেন্স পেতে পারে।

ডিভাইসের সিরিয়াল নম্বর প্রদর্শনের জন্য HelloWorldTest প্রিন্ট বার্তা পরিবর্তন করা যাক:

@Override
public void run(TestInformation testInfo, ITestInvocationListener listener) throws DeviceNotAvailableException {
    CLog.i("Hello, TF World! I have device " + testInfo.getDevice().getSerialNumber());
}

এখন ট্রেডফেড পুনর্নির্মাণ করুন এবং ডিভাইসের তালিকা পরীক্ষা করুন:

tradefed.sh
tf> list devices
Serial            State      Product   Variant   Build   Battery
004ad9880810a548  Available  mako      mako      JDQ39   100

উপলব্ধ হিসাবে তালিকাভুক্ত সিরিয়াল নম্বর নোট নিন; এটি সেই ডিভাইস যা হ্যালোওয়ার্ল্ডে বরাদ্দ করা উচিত:

tf> run example/helloworld
05-12 13:26:18 I/TestInvocation: Starting invocation for target stub on build 0 on device 004ad9880810a548
Hello, TF World! I have device 004ad9880810a548

আপনি ডিভাইসের সিরিয়াল নম্বর প্রদর্শন নতুন মুদ্রণ বার্তা দেখতে হবে.

পরীক্ষার ফলাফল পাঠান (D)

IRemoteTest #run পদ্ধতিতে প্রদত্ত ITestInvocationListener ইন্সট্যান্সে কল পদ্ধতির মাধ্যমে ফলাফল রিপোর্ট করে। TF ফ্রেমওয়ার্ক নিজেই প্রতিটি আহ্বানের শুরু ( ITestInvocationListener#invocationStarted এর মাধ্যমে) এবং শেষ ( ITestInvocationListener#invocationEnded এর মাধ্যমে) রিপোর্ট করার জন্য দায়ী।

একটি পরীক্ষা চালানো হল পরীক্ষার একটি যৌক্তিক সংগ্রহ। পরীক্ষার ফলাফল রিপোর্ট করার জন্য, IRemoteTest একটি পরীক্ষা চালানোর শুরু, প্রতিটি পরীক্ষার শুরু এবং শেষ এবং পরীক্ষা চালানোর শেষ রিপোর্ট করার জন্য দায়ী।

একটি একক ব্যর্থ পরীক্ষার ফলাফলের সাথে HelloWorldTest বাস্তবায়ন দেখতে কেমন হতে পারে তা এখানে।

@Override
public void run(TestInformation testInfo, ITestInvocationListener listener) throws DeviceNotAvailableException {
    CLog.i("Hello, TF World! I have device " + testInfo.getDevice().getSerialNumber());

    TestDescription testId = new TestDescription("com.example.TestClassName", "sampleTest");
    listener.testRunStarted("helloworldrun", 1);
    listener.testStarted(testId);
    listener.testFailed(testId, "oh noes, test failed");
    listener.testEnded(testId, Collections.emptyMap());
    listener.testRunEnded(0, Collections.emptyMap());
}

TF-তে বেশ কিছু IRemoteTest বাস্তবায়ন অন্তর্ভুক্ত রয়েছে যা আপনি স্ক্র্যাচ থেকে নিজের লেখার পরিবর্তে পুনরায় ব্যবহার করতে পারেন। উদাহরণস্বরূপ, InstrumentationTest একটি Android ডিভাইসে দূরবর্তীভাবে একটি Android অ্যাপ্লিকেশনের পরীক্ষা চালাতে পারে, ফলাফলগুলি পার্স করতে পারে এবং সেই ফলাফলগুলি ITestInvocationListener এ ফরোয়ার্ড করতে পারে)। বিস্তারিত জানার জন্য, পরীক্ষার ধরন দেখুন।

পরীক্ষার ফলাফল সংরক্ষণ করুন (I)

একটি TF কনফিগারেশনের জন্য ডিফল্ট পরীক্ষা শ্রোতা বাস্তবায়ন হল TextResultReporter , যা stdout-এ একটি আহ্বানের ফলাফল ডাম্প করে। ব্যাখ্যা করার জন্য, পূর্ববর্তী বিভাগ থেকে HelloWorldTest কনফিগারেশন চালান:

./tradefed.sh
tf> run example/helloworld
04-29 18:25:55 I/TestInvocation: Invocation was started with cmd: /tmp/helloworld.xml
04-29 18:25:55 I/TestInvocation: Starting invocation for 'stub' with '[ BuildInfo{bid=0, target=stub, serial=876X00GNG} on device '876X00GNG']
04-29 18:25:55 I/HelloWorldTest: Hello, TF World! I have device 876X00GNG
04-29 18:25:55 I/InvocationToJUnitResultForwarder: Running helloworldrun: 1 tests
04-29 18:25:55 W/InvocationToJUnitResultForwarder:
Test com.example.TestClassName#sampleTest failed with stack:
 oh noes, test failed
04-29 18:25:55 I/InvocationToJUnitResultForwarder: Run ended in 0 ms

অন্য কোথাও একটি আহ্বানের ফলাফল সংরক্ষণ করতে, যেমন একটি ফাইলে, আপনার কনফিগারেশনে result_reporter ট্যাগ ব্যবহার করে একটি কাস্টম ITestInvocationListener বাস্তবায়ন নির্দিষ্ট করুন।

TF-এ XmlResultReporter শ্রোতাও রয়েছে, যেটি একটি XML ফাইলে পরীক্ষার ফলাফল লেখেন যা ant JUnit XML লেখক দ্বারা ব্যবহৃত ফর্ম্যাটে। কনফিগারেশনে result_reporter উল্লেখ করতে, …/res/config/example/helloworld.xml কনফিগারেশনটি সম্পাদনা করুন:

<configuration description="Runs the hello world test">
    <test class="com.android.tradefed.example.HelloWorldTest" />
    <result_reporter class="com.android.tradefed.result.XmlResultReporter" />
</configuration>

এখন ট্রেডফেড পুনর্নির্মাণ করুন এবং হ্যালো ওয়ার্ল্ড নমুনাটি পুনরায় চালান:

tf> run example/helloworld
05-16 21:07:07 I/TestInvocation: Starting invocation for target stub on build 0 on device 004ad9880810a548
Hello, TF World! I have device 004ad9880810a548
05-16 21:07:07 I/XmlResultReporter: Saved device_logcat log to /tmp/0/inv_2991649128735283633/device_logcat_6999997036887173857.txt
05-16 21:07:07 I/XmlResultReporter: Saved host_log log to /tmp/0/inv_2991649128735283633/host_log_6307746032218561704.txt
05-16 21:07:07 I/XmlResultReporter: XML test result file generated at /tmp/0/inv_2991649128735283633/test_result_536358148261684076.xml. Total tests 1, Failed 1, Error 0

একটি XML ফাইল তৈরি করা হয়েছে উল্লেখ করে লগ বার্তাটি লক্ষ্য করুন; উত্পন্ন ফাইল এই মত হওয়া উচিত:

<?xml version='1.0' encoding='UTF-8' ?>
<testsuite name="stub" tests="1" failures="1" errors="0" time="9" timestamp="2011-05-17T04:07:07" hostname="localhost">
  <properties />
  <testcase name="sampleTest" classname="com.example.TestClassName" time="0">
    <failure>oh noes, test failed
    </failure>
  </testcase>
</testsuite>

আপনি আপনার নিজস্ব কাস্টম আমন্ত্রণ শ্রোতাদেরও লিখতে পারেন—তাদের কেবল ITestInvocationListener ইন্টারফেস বাস্তবায়ন করতে হবে।

ট্রেডফেড একাধিক আহ্বান শ্রোতাদের সমর্থন করে, তাই আপনি একাধিক স্বাধীন গন্তব্যে পরীক্ষার ফলাফল পাঠাতে পারেন। এটি করার জন্য, আপনার কনফিগারেশনে শুধু একাধিক <result_reporter> ট্যাগ উল্লেখ করুন।

লগিং সুবিধা (D, I, R)

TF এর লগিং সুবিধাগুলির মধ্যে রয়েছে:

  1. ডিভাইস থেকে লগ ক্যাপচার করুন (ওরফে ডিভাইস লগক্যাট)
  2. হোস্ট মেশিনে চলমান ট্রেড ফেডারেশন ফ্রেমওয়ার্ক থেকে রেকর্ড লগ (ওরফে হোস্ট লগ)

TF ফ্রেমওয়ার্ক স্বয়ংক্রিয়ভাবে বরাদ্দকৃত ডিভাইস থেকে লগক্যাট ক্যাপচার করে এবং প্রক্রিয়াকরণের জন্য আহ্বান শ্রোতার কাছে পাঠায়। XmlResultReporter তারপর একটি ফাইল হিসাবে ক্যাপচার করা ডিভাইস logcat সংরক্ষণ করে।

TF হোস্ট লগগুলি ddmlib লগ ক্লাসের জন্য CLog র্যাপার ব্যবহার করে রিপোর্ট করা হয়। HelloWorldTest-এ আগের System.out.println কলটিকে একটি CLog কলে রূপান্তর করা যাক:

@Override
public void run(ITestInvocationListener listener) throws DeviceNotAvailableException {
    CLog.i("Hello, TF World! I have device %s", getDevice().getSerialNumber());

CLog সরাসরি স্ট্রিং ইন্টারপোলেশন পরিচালনা করে, String.format এর মতো। আপনি যখন TF পুনঃনির্মাণ করবেন এবং পুনরায় চালাবেন, তখন আপনার stdout-এ লগ বার্তাটি দেখতে হবে:

tf> run example/helloworld
…
05-16 21:30:46 I/HelloWorldTest: Hello, TF World! I have device 004ad9880810a548
…

ডিফল্টরূপে, ট্রেডফেড আউটপুট stdout এ লগ বার্তা হোস্ট করে । TF-এ একটি লগ বাস্তবায়নও রয়েছে যা একটি ফাইলে বার্তা লেখে: FileLogger । ফাইল লগিং যোগ করতে, FileLogger পুরো ক্লাসের নাম উল্লেখ করে কনফিগারেশনে একটি logger ট্যাগ যোগ করুন:

<configuration description="Runs the hello world test">
    <test class="com.android.tradefed.example.HelloWorldTest" />
    <result_reporter class="com.android.tradefed.result.XmlResultReporter" />
    <logger class="com.android.tradefed.log.FileLogger" />
</configuration>

এখন, হ্যালোওয়ার্ল্ড উদাহরণটি পুনরায় তৈরি করুন এবং চালান:

tf >run example/helloworld
…
05-16 21:38:21 I/XmlResultReporter: Saved device_logcat log to /tmp/0/inv_6390011618174565918/device_logcat_1302097394309452308.txt
05-16 21:38:21 I/XmlResultReporter: Saved host_log log to /tmp/0/inv_6390011618174565918/host_log_4255420317120216614.txt
…

লগ বার্তাটি হোস্ট লগের পথ নির্দেশ করে, যেটি দেখার সময়, আপনার HelloWorldTest লগ বার্তা থাকা উচিত:

more /tmp/0/inv_6390011618174565918/host_log_4255420317120216614.txt

উদাহরণ আউটপুট:

…
05-16 21:38:21 I/HelloWorldTest: Hello, TF World! I have device 004ad9880810a548

হ্যান্ডলিং অপশন (D, I, R)

একটি TF কনফিগারেশন (ওরফে কনফিগারেশন অবজেক্ট ) থেকে লোড করা বস্তুগুলি @Option টীকা ব্যবহারের মাধ্যমে কমান্ড লাইন আর্গুমেন্ট থেকে ডেটা গ্রহণ করতে পারে।

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

দ্রষ্টব্য: সমস্ত ক্ষেত্রের ধরন সমর্থিত নয়। সমর্থিত প্রকারের বর্ণনার জন্য, OptionSetter দেখুন।

HelloWorldTest-এ একটি @Option যোগ করা যাক:

@Option(name="my_option",
        shortName='m',
        description="this is the option's help text",
        // always display this option in the default help text
        importance=Importance.ALWAYS)
private String mMyOption = "thisisthedefault";

এর পরে, HelloWorldTest-এ বিকল্পটির মান প্রদর্শন করার জন্য একটি লগ বার্তা যোগ করা যাক যাতে আমরা প্রদর্শন করতে পারি যে এটি সঠিকভাবে প্রাপ্ত হয়েছে:

@Override
public void run(ITestInvocationListener listener) throws DeviceNotAvailableException {
    …
    CLog.logAndDisplay(LogLevel.INFO, "I received option '%s'", mMyOption);

অবশেষে, টিএফ পুনর্নির্মাণ করুন এবং হ্যালোওয়ার্ল্ড চালান; আপনি my_option ডিফল্ট মান সহ একটি লগ বার্তা দেখতে পাবেন:

tf> run example/helloworld
…
05-24 18:30:05 I/HelloWorldTest: I received option 'thisisthedefault'

কমান্ড লাইন থেকে মান পাস করুন

my_option এর জন্য একটি মান পাস করুন; আপনি my_option সেই মান দিয়ে পপুলেট দেখতে পাবেন:

tf> run example/helloworld --my_option foo
…
05-24 18:33:44 I/HelloWorldTest: I received option 'foo'

TF কনফিগারেশনে একটি হেল্প সিস্টেমও রয়েছে, যা @Option ক্ষেত্রের জন্য স্বয়ংক্রিয়ভাবে সাহায্য পাঠ্য প্রদর্শন করে। এখন এটি চেষ্টা করুন, এবং আপনি my_option এর জন্য সহায়তা পাঠ্য দেখতে পাবেন:

tf> run example/helloworld --help
Printing help for only the important options. To see help for all options, use the --help-all flag

  cmd_options options:
    --[no-]help          display the help text for the most important/critical options. Default: false.
    --[no-]help-all      display the full help text for all options. Default: false.
    --[no-]loop          keep running continuously. Default: false.

  test options:
    -m, --my_option      this is the option's help text Default: thisisthedefault.

  'file' logger options:
    --log-level-display  the minimum log level to display on stdout. Must be one of verbose, debug, info, warn, error, assert. Default: error.

"শুধুমাত্র গুরুত্বপূর্ণ বিকল্পগুলি প্রিন্ট করা" সম্পর্কে বার্তাটি নোট করুন। অপশন হেল্প বিশৃঙ্খলতা কমাতে, TF একটি নির্দিষ্ট @Option ফিল্ড হেল্প টেক্সট দেখানো হবে কিনা তা নির্ধারণ করতে Option#importance অ্যাট্রিবিউট ব্যবহার করে যখন --help নির্দিষ্ট করা থাকে। --help-all সর্বদা সমস্ত @Option ক্ষেত্রের জন্য সাহায্য দেখায়, গুরুত্ব নির্বিশেষে। বিস্তারিত জানার জন্য, Option.Importance দেখুন।

একটি কনফিগারেশন থেকে মান পাস

আপনি একটি <option name="" value=""> উপাদান যোগ করে কনফিগারেশনের মধ্যে একটি বিকল্প মানও নির্দিষ্ট করতে পারেন। helloworld.xml ব্যবহার করে এটি পরীক্ষা করুন:

<test class="com.android.tradefed.example.HelloWorldTest" >
    <option name="my_option" value="fromxml" />
</test>

পুনঃনির্মাণ এবং হ্যালোওয়ার্ল্ড চালানো এখন এই আউটপুট তৈরি করা উচিত:

05-24 20:38:25 I/HelloWorldTest: I received option 'fromxml'

my_option এর ডিফল্ট মান নির্দেশ করতে কনফিগারেশন সহায়তাও আপডেট করা উচিত:

tf> run example/helloworld --help
  test options:
    -m, --my_option      this is the option's help text Default: fromxml.

Helloworld কনফিগারেশনের অন্তর্ভুক্ত অন্যান্য কনফিগারেশন অবজেক্ট, যেমন FileLogger , বিকল্পগুলিও গ্রহণ করে। --log-level-display বিকল্পটি আকর্ষণীয় কারণ এটি stdout-এ প্রদর্শিত লগগুলিকে ফিল্টার করে। টিউটোরিয়ালের আগে, আপনি হয়তো লক্ষ্য করেছেন "হ্যালো, টিএফ ওয়ার্ল্ড! আমার ডিভাইস আছে...' লগ মেসেজটি stdout-এ প্রদর্শিত হওয়া বন্ধ হয়ে গেছে যখন আমরা FileLogger ব্যবহারে স্যুইচ করার পরে --log-level-display arg.

এটি এখনই চেষ্টা করুন, এবং আপনি একটি ফাইলে লগ ইন করার পাশাপাশি, stdout-এ 'আমার আছে ডিভাইস' লগ বার্তাটি পুনরায় উপস্থিত হওয়া উচিত:

tf> run example/helloworld --log-level-display info
…
05-24 18:53:50 I/HelloWorldTest: Hello, TF World! I have device 004ad9880810a548

যে সব, লোকেরা!

একটি অনুস্মারক হিসাবে, আপনি যদি কিছুতে আটকে থাকেন, ট্রেড ফেডারেশন সোর্স কোডে অনেক দরকারী তথ্য রয়েছে যা ডকুমেন্টেশনে প্রকাশ করা হয় না। অন্য সব ব্যর্থ হলে, বার্তার বিষয়ে "ট্রেড ফেডারেশন" সহ Android-প্ল্যাটফর্ম Google Group-এ জিজ্ঞাসা করার চেষ্টা করুন৷