แตงกวาใช้ขวดวิ่งอย่างไร?

ฉันมีโครงการกับแตงกวาและมาเวน ฉันสามารถเรียกใช้และสร้างโครงการของฉันได้สำเร็จจาก Intellij IDEA และฉันสามารถรันโปรเจ็กต์จากบรรทัดคำสั่งโดยใช้: mvn clean test -Dcucumber.options="src/test/resources/features --tags @TEST2"

ตอนนี้ฉันต้องการโปรเจ็กต์นี้จากบรรทัดคำสั่งในเครื่องอื่นที่ไม่ได้ติดตั้ง IDEA หรือแตงกวา ฉันมีความคิดที่ฉันต้องสร้างไฟล์ jar และรันจากบรรทัดคำสั่ง

CucumberTest.java เอง:

@RunWith(Cucumber.class)
@CucumberOptions(
        monochrome = true,
        glue = {"ru.ab.cd.stepDefs", "ru.abcd.tag.stepdefs"},
        features = {"src/test/resources/features/"},
        tags = {"@TEST1"},
        plugin = {"pretty", "html:target/cucumber-html-report"}
)

public class CucumberTest {
}

TestRunner.java ที่รัน CucumberTest.java ฉันสร้างคลาสนี้โดยเฉพาะเพื่อให้สามารถเรียกใช้จากบรรทัดคำสั่งได้ ฉันต้องการส่งค่าสำหรับ arguments จากบรรทัดคำสั่ง แต่ฉันยังไม่เข้าใจว่าควรส่งค่าใด และลองค้นหาโดยส่ง testArguments

public class TestRunner{

    public static void main(String[] args) throws Throwable {
        String[] testArguments = {"/BitBucketProjects/abc/src/test/resources/features/smoke/TEST2.feature"};
        cucumber.api.cli.Main.main(testArguments);
    }
}

ผลลัพธ์เมื่อฉันรัน TestRunner.java การทดสอบไม่ได้เริ่มต้นขึ้น ทุกขั้นตอนได้รับการกำหนดไว้ หากฉันทำการทดสอบเดียวกันผ่าน CucumberTest.java ทุกอย่างจะสำเร็จ

UUUUUUU

1 Scenarios (1 undefined)
7 Steps (7 undefined)
0m0,014s


You can implement missing steps with the snippets below:

@Допустим("^пользователь переходит на страницу авторизации$")
public void пользователь_переходит_на_страницу_авторизации() {
    // Write code here that turns the phrase above into concrete actions
    throw new PendingException();
}

@Допустим("^пользователь находится на странице \"([^\"]*)\"$")
public void пользователь_находится_на_странице(String arg1) {
    // Write code here that turns the phrase above into concrete actions
    throw new PendingException();
}

@Допустим("^пользователь загружает тестовые данные из json-файла$")
public void пользователь_загружает_тестовые_данные_из_json_файла() {
    // Write code here that turns the phrase above into concrete actions
    throw new PendingException();
}

@Допустим("^пользователь авторизуется с ролью \"([^\"]*)\"$")
public void пользователь_авторизуется_с_ролью(String arg1) {
    // Write code here that turns the phrase above into concrete actions
    throw new PendingException();
}

@Допустим("^ПРОВЕРКА\\. Ссылка \"([^\"]*)\" отображается на текущей странице$")
public void проверка_Ссылка_отображается_на_текущей_странице(String arg1) {
    // Write code here that turns the phrase above into concrete actions
    throw new PendingException();
}

@Допустим("^ПРОВЕРКА\\. Таблица \"([^\"]*)\" отображается на текущей странице$")
public void проверка_Таблица_отображается_на_текущей_странице(String arg1) {
    // Write code here that turns the phrase above into concrete actions
    throw new PendingException();
}


Process finished with exit code 0

ช่วย!

  1. ฉันควรส่งพารามิเตอร์ใดไปยัง A เพื่อให้การทดสอบทำงานได้
  2. ฉันต้องใช้แท็กเป็นพารามิเตอร์ ทำอย่างไร?

person NeverSleeps    schedule 05.02.2020    source แหล่งที่มา


คำตอบ (1)


ข้อผิดพลาดแจ้งว่าแตงกวาไม่เห็นคลาสที่มีคำจำกัดความขั้นตอน เปลี่ยนคลาสแล้วข้อผิดพลาดก็หายไป

public class RunnerTest {
    private static String[] defaultOptions = {
            "--glue", "ru.ab.cd.stepDefs",
            "--glue", "ru.abcd.tag.stepdefs",
            "--tags", "@TEST2",
            "src/test/resources/features/"
    };

    public static void main(String[] args) throws Throwable {
        Stream<String> cucumberOptions = Stream.concat(Stream.of(defaultOptions), Stream.of(args));
        cucumber.api.cli.Main.main(cucumberOptions.toArray(String[]::new));
    }
}
  • "--glue" - แพ็คเกจที่มีคลาสที่มีการดำเนินการตามขั้นตอนและ hooks
  • "--tags" - ตัวกรองสำหรับการเรียกใช้การทดสอบตามแท็ก บรรทัดนี้สามารถลบได้และค่าที่ส่งผ่านคอนโซล: --tags @TEST2

  • "src/test/resources/features/" - บรรทัดสุดท้ายที่ไม่มีคำนำหน้าเช่น "--keyword" - คือเส้นทางไปยังโฟลเดอร์ที่มีไฟล์ .feature เฟรมเวิร์กจะค้นหาไฟล์ในโฟลเดอร์นี้และในโฟลเดอร์ย่อยทั้งหมด

person NeverSleeps    schedule 05.02.2020