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