マクロ
テストコードを再利用することはとても重要です。定型処理はマクロとして登録することができます。
マクロオブジェクト/マクロ関数を作成する
src/test/kotlin
の配下の任意の場所にobjectクラスを作成します。例えば、macro
ディレクトリを作成し、その下にMacroObject1
を作成します。- 以下のようにコードを実装します。
- @MacroObject アノテーションをobjectクラスに付与します。
- TestDrive インターフェースを継承します。
- 関数を作成し、@Macro アノテーションを付与します。
package macro
import shirates.core.driver.TestDrive
import shirates.core.driver.commandextension.tap
import shirates.core.macro.Macro
import shirates.core.macro.MacroObject
@MacroObject
object MacroObject1 : TestDrive {
@Macro("[Network preferences Screen]")
fun internetScreen() {
it.tap("Network & internet")
.tap("Internet")
.tap("Network preferences")
}
}
- プロジェクトをビルドします。
out
ディレクトリ内にマクロのクラスファイルが作成されます。
マクロ関数の使用
kotlin/exercise
の下にMacro1
クラスを作成します。- テストコードを以下のように実装します。
package exercise
import org.junit.jupiter.api.Order
import org.junit.jupiter.api.Test
import shirates.core.configuration.Testrun
import shirates.core.driver.commandextension.exist
import shirates.core.driver.commandextension.macro
import shirates.core.testcode.UITest
@Testrun("testConfig/android/androidSettings/testrun.properties")
class Macro1 : UITest() {
@Test
@Order(10)
fun macro1() {
scenario {
case(1) {
action {
it.macro("[Network preferences Screen]")
}.expectation {
it.exist("Install certificates")
}
}
}
}
}
テストコードを実行します。コンソールに以下のようなログが出力されます。
[info] () Registering macro. (macro.MacroObject1)