/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 6 ĠThe ĠAndroid ĠOpen ĠSource ĠProject Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . android . build . gradle . integration . application Ċ Ċ import Ġcom . android . build . gradle . integration . common . fixture . Gradle Project Ċ import Ġcom . android . build . gradle . integration . common . fixture . Gradle Test Project Ċ import Ġcom . android . build . gradle . integration . common . fixture . Gradle Test Project . Companion . DEFAULT _ BUILD _ TOOL _ VERSION Ċ import Ġcom . android . build . gradle . integration . common . fixture . Gradle Test Project . Companion . DEFAULT _ COMPILE _ SDK _ VERSION Ċ import Ġcom . android . build . gradle . integration . common . fixture . app . Annotation Processor Lib Ċ import Ġcom . android . build . gradle . integration . common . fixture . app . HelloWorld App Ċ import Ġcom . android . build . gradle . integration . common . fixture . app . Multi Module Test Project Ċ import Ġcom . android . build . gradle . integration . common . fixture . app . Test SourceFile Ċ import Ġcom . android . build . gradle . integration . common . truth . Truth Helper . assertThat Ċ import Ġcom . android . build . gradle . integration . common . utils . Test FileUtils Ċ import Ġcom . android . build . gradle . integration . common . utils . get Android Test Artifact Ċ import Ġcom . android . build . gradle . integration . common . utils . get Debug Variant Ċ import Ġcom . android . build . gradle . integration . common . utils . get UnitTest Artifact Ċ import Ġcom . android . test utils . truth . Path Subject . assertThat Ċ import Ġcom . google . common . base . Charsets Ċ import Ġcom . google . common . io . Files Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Rule Ċ import Ġorg . junit . Test Ċ import Ġjava . io . File Ċ Ċ /** Ċ Ġ* ĠTests Ġfor Ġannotation Ġprocessor . Ċ Ġ*/ Ċ class ĠAnnotation Processor Test Ġ{ ĊĊĠĠĠ Ġ@ Rule ĊĠĠĠ Ġ@ Jvm Field ĊĠĠĠ Ġval Ġproject : ĠGradle Test Project Ġ= ĠGradle Test Project . builder () ĊĠĠĠĠĠĠĠ Ġ. from Test App ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMulti Module Test Project ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of < String , ĠGradle Project >( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ": app " Ġto Ġapp , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ": lib " Ġto ĠAnnotation Processor Lib . create Library (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ": lib - compiler " Ġto ĠAnnotation Processor Lib . create Compiler () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ). create () ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtest Support Lib Version Ġ= Ġ"\ ${ project . test Support Lib Version }" ĊĠĠĠĠĠĠĠ Ġval Ġbuild Script Ġ= Ġ( """ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapply Ġfrom : Ġ"../../ common Header . gradle " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuild script Ġ{ Ġapply Ġfrom : Ġ"../../ common Build Script . gradle " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapply Ġfrom : Ġ"../../ common Local Repo . gradle " ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapply Ġplugin : Ġ' com . android . application ' ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcompile Sdk Version Ġ$ DEFAULT _ COMPILE _ SDK _ VERSION ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuild Tools Version Ġ'$ DEFAULT _ BUILD _ TOOL _ VERSION ' ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdefault Config Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjava Compile Options Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġannotation Processor Options Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument Ġ" value ", Ġ" Hello " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmin Sdk Version Ġroot Project . support Lib Min Sdk ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtest Instrumentation Runner Ġ' android . support . test . runner . Android JUnit Runner ' ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdependencies Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid Test Implementation Ġ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" com . android . support . test : runner :$ test Support Lib Version " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid Test Implementation Ġ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" com . android . support . test : rules :$ test Support Lib Version " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ). trim Indent () ĊĠĠĠĠĠĠĠ ĠFiles . as Char Sink ( project . getSub project (": app ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. file (" build . gradle "), ĠChar sets . UTF _ 8 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. write ( build Script ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġnormal Build () Ġ{ ĊĠĠĠĠĠĠĠ ĠTest FileUtils . append ToFile ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproject . getSub project (": app "). build File , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdependencies Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapi Ġproject (': lib ') ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġannotation Processor Ġproject (': lib - compiler ') ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġproject . executor (). run (" assemble Debug ") ĊĠĠĠĠĠĠĠ Ġval Ġapt Output Folder Ġ= Ġproject . getSub project (": app ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. file ( AN NOT ATION _ PROCESS OR _ SOURCES _ OUT _ FOLDER Ġ+ Ġ" debug / out ") ĊĠĠĠĠĠĠĠ ĠassertThat ( File ( apt Output Folder , Ġ" com / example / helloworld / HelloWorld StringValue . java ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. exists () ĊĊĠĠĠĠĠĠĠ Ġval Ġmodel Ġ= Ġproject . model (). fetch Android Projects (). only Model Map [ ": app "] ĊĠĠĠĠĠĠĠ Ġval Ġdebug Variant Ġ= Ġ( model ) !!. get Debug Variant () ĊĊĠĠĠĠĠĠĠ ĠassertThat ( debug Variant . main Artifact . generated Source Folders ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. contains ( apt Output Folder ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠEnsure Ġthat Ġtest Ġsources Ġalso Ġhave Ġtheir Ġgenerated Ġsources Ġfiles Ġsent Ġto Ġthe ĠIDE . ĠThis ĊĠĠĠĠĠĠĠ Ġ// Ġspecifically Ġtests Ġfor Ġthe Ġissue Ġdescribed Ġin ĊĠĠĠĠĠĠĠ Ġ// Ġhttps :// issue tracker . google . com / 3 7 1 2 1 9 1 8 . ĊĠĠĠĠĠĠĠ Ġval Ġtest A pt Output Folder Ġ= Ġproject . getSub project (": app ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. file ( AN NOT ATION _ PROCESS OR _ SOURCES _ OUT _ FOLDER Ġ+ Ġ" debug UnitTest / out ") ĊĠĠĠĠĠĠĠ Ġval Ġtest Artifact Ġ= Ġdebug Variant . get UnitTest Artifact () ĊĠĠĠĠĠĠĠ ĠassertThat ( test Artifact . generated Source Folders ). contains ( test A pt Output Folder ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠEnsure Ġthat Ġtest Ġprojects Ġalso Ġhave Ġtheir Ġgenerated Ġsources Ġfiles Ġsent Ġto Ġthe ĠIDE . ĠThis ĊĠĠĠĠĠĠĠ Ġ// Ġspecifically Ġtests Ġfor Ġthe Ġissue Ġdescribed Ġin ĊĠĠĠĠĠĠĠ Ġ// Ġhttps :// issue tracker . google . com / 3 7 1 2 1 9 1 8 . ĊĠĠĠĠĠĠĠ Ġval Ġandroid Test A pt Output Folder Ġ= Ġproject . getSub project (": app ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. file ( AN NOT ATION _ PROCESS OR _ SOURCES _ OUT _ FOLDER Ġ+ Ġ" debug Android Test / out ") ĊĠĠĠĠĠĠĠ Ġval Ġandroid Test Ġ= Ġdebug Variant . get Android Test Artifact () ĊĠĠĠĠĠĠĠ ĠassertThat ( android Test . generated Source Folders ). contains ( android Test A pt Output Folder ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġcheck Ġincrement ality . ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġproject . executor (). run (" assemble Debug ") ĊĠĠĠĠĠĠĠ ĠassertThat ( result . up ToDate Tasks ). contains (": app : java Pre Compile Debug ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Build () Ġ{ ĊĠĠĠĠĠĠĠ ĠTest FileUtils . append ToFile ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproject . getSub project (": app "). build File , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdependencies Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġannotation Processor Ġproject (': lib - compiler ') ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtest Annotation Processor Ġproject (': lib - compiler ') ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid Test Annotation Processor Ġproject (': lib - compiler ') ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapi Ġproject (': lib ') ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġproject . executor (). run (" assemble Debug Android Test ", Ġ" test Debug ") ĊĠĠĠĠĠĠĠ Ġval Ġapt Output Folder Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproject . getSub project (": app "). file ( AN NOT ATION _ PROCESS OR _ SOURCES _ OUT _ FOLDER ) ĊĠĠĠĠĠĠĠ ĠassertThat ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFile ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapt Output Folder , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" debug Android Test / out / com / example / helloworld / HelloWorld Android Test StringValue . java " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. exists () ĊĠĠĠĠĠĠĠ ĠassertThat ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFile ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapt Output Folder , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" debug UnitTest / out / com / example / helloworld / HelloWorld Test StringValue . java " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. exists () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġandroid A pt Plugin Fail () Ġ{ ĊĠĠĠĠĠĠĠ ĠTest FileUtils . append ToFile ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproject . getSub project (": app "). build File , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" apply Ġplugin : Ġ' com . ne en bed ank t . android - apt '\ n ") ĊĊĠĠĠĠĠĠĠ Ġproject . executor (). expect Failure (). run (" assemble Debug ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠAN NOT ATION _ PROCESS OR _ SOURCES _ OUT _ FOLDER Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" build / generated / ap _ generated _ sources /" ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġapp Ġ= ĠHello World App . no Build File () ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapp . replace File ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTest SourceFile ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" src / main / java / com / example / helloworld / HelloWorld . java ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Ġcom . example . helloworld ; ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġandroid . app . Activity ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġandroid . widget . TextView ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġandroid . os . Bundle ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġcom . example . annotation . Provide String ; ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Provide String ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġclass ĠHello World Ġextends ĠActivity Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĠCalled Ġwhen Ġthe Ġactivity Ġis Ġfirst Ġcreated . Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Override ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġvoid ĠonCreate ( Bundle ĠsavedInstanceState ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTextView Ġtv Ġ= Ġnew ĠTextView ( this ); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv . setText ( getString ()); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsetContentView ( tv ); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġstatic ĠString ĠgetString () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnew Ġcom . example . helloworld . HelloWorld StringValue (). value ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġstatic ĠString Ġget Processor () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnew Ġcom . example . helloworld . HelloWorld StringValue (). processor ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġapp . remove File ByName (" HelloWorld Test . java ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġapp . add File ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTest SourceFile ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" src / test / java / com / example / helloworld / HelloWorld Test . java ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Ġcom . example . helloworld ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġcom . example . annotation . Provide String ; ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Provide String ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġclass ĠHello World Test Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġapp . add File ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTest SourceFile ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" src / android Test / java / com / example / hello jni / HelloWorld Android Test . java ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Ġcom . example . helloworld ; ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġandroid . support . test . runner . Android JUnit 4 ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġorg . junit . Assert ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġorg . junit . Test ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġorg . junit . runner . RunWith ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġcom . example . annotation . Provide String ; ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Provide String ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ RunWith ( Android JUnit 4 . class ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġclass ĠHello World Android Test Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġvoid Ġtest StringValue () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertTrue (" Hello ". equals ( HelloWorld . getString ())); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġvoid Ġtest Processor () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertTrue (" Processor ". equals ( HelloWorld . get Processor ())); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ