From ddb4384fc802711e05d035e13023a29c27471c68 Mon Sep 17 00:00:00 2001 From: Toast kid Date: Tue, 17 Jan 2017 22:42:28 +0900 Subject: [PATCH] implement ui test --- build.gradle | 2 + .../jp/toastkid/script/ControllerTest.java | 61 +++++++++++++++++++ 2 files changed, 63 insertions(+) create mode 100644 src/test/java/jp/toastkid/script/ControllerTest.java diff --git a/build.gradle b/build.gradle index cc0d55e..96b81cd 100644 --- a/build.gradle +++ b/build.gradle @@ -39,6 +39,8 @@ dependencies { provided 'org.slf4j:slf4j-log4j12:1.7.21' testCompile 'junit:junit:4.11' + testCompile 'org.testfx:testfx-junit:4.0.5-alpha' + testCompile 'org.mockito:mockito-all:1.9.5' } compileJava { //add required JavaFX libs to compile classpath diff --git a/src/test/java/jp/toastkid/script/ControllerTest.java b/src/test/java/jp/toastkid/script/ControllerTest.java new file mode 100644 index 0000000..da7e57c --- /dev/null +++ b/src/test/java/jp/toastkid/script/ControllerTest.java @@ -0,0 +1,61 @@ +package jp.toastkid.script; + +import static org.junit.Assert.assertEquals; + +import java.io.IOException; + +import org.fxmisc.richtext.CodeArea; +import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.testfx.framework.junit.ApplicationTest; + +import javafx.application.Platform; +import javafx.event.ActionEvent; +import javafx.fxml.FXMLLoader; +import javafx.scene.Scene; +import javafx.scene.layout.VBox; +import javafx.stage.Stage; + +/** + * {@link Controller}'s test. + * + * @author Toast kid + * + */ +public class ControllerTest extends ApplicationTest { + + /** Logger. */ + private static final Logger LOGGER = LoggerFactory.getLogger(ControllerTest.class); + + /** + * UI test. + * @throws InterruptedException + */ + @Test + public void test() throws InterruptedException { + final CodeArea input = (CodeArea) lookup("#scripterInput").query(); + final String text = "println 'Hello world.'"; + Platform.runLater(() -> { + input.replaceText(text); + assertEquals(text, input.getText()); + lookup("#runButton").query().fireEvent(new ActionEvent()); + assertEquals("Hello world.", ((CodeArea) lookup("#scripterOutput").query()).getText().trim()); + }); + } + + @Override + public void start(final Stage stage) throws Exception { + try { + final FXMLLoader loader + = new FXMLLoader(getClass().getClassLoader().getResource("scenes/Main.fxml")); + final VBox loaded = (VBox) loader.load(); + final Scene scene = new Scene(loaded); + stage.setScene(scene); + } catch (final IOException e) { + LOGGER.error("Scene Reading Error", e); + } + stage.show(); + } + +}