簡體   English   中英

注釋不使用黃瓜JVM在SharedDriver中觸發

[英]Annotations not firing in SharedDriver with cucumber-jvm

這讓我發瘋。 我正在使用Cucuming-jvm運行測試框架,並嘗試獲取其截屏。 我查看了提供的java-webbit-websockets-selenium示例,並實現了使用SharedDriver模塊調用Webdriver的相同方法。 由於某種原因,我的@Before和@After方法沒有被調用(我在其中放置了打印語句)。 誰能闡明任何想法?

共享驅動程序:

package com.connectors;

import cucumber.api.java.After;
import cucumber.api.java.Before;
import cucumber.api.Scenario;
import org.openqa.selenium.Dimension;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebDriverException;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.firefox.FirefoxProfile;
import org.openqa.selenium.support.events.EventFiringWebDriver;

import java.util.concurrent.TimeUnit;


public class SharedDriver extends EventFiringWebDriver {




    private static final WebDriver REAL_DRIVER = new FirefoxDriver();

        private static final Thread CLOSE_THREAD = new Thread() {
            @Override
            public void run() {
                REAL_DRIVER.close();
            }
        };

        static {
            Runtime.getRuntime().addShutdownHook(CLOSE_THREAD);
        }

        public SharedDriver() {
            super(REAL_DRIVER);
            REAL_DRIVER.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
            REAL_DRIVER.manage().window().setSize(new Dimension(1200,800));
            System.err.println("DRIVER");
        }

        @Override
        public void close() {
            if(Thread.currentThread() != CLOSE_THREAD) {
                throw new UnsupportedOperationException("You shouldn't close this WebDriver. It's shared and will close when the JVM exits.");
            }
            super.close();
        }

        @Before()
        public void deleteAllCookies() {
            manage().deleteAllCookies();
            System.err.println("BEFORE");
        }

        @After
        public void embedScreenshot(Scenario scenario) {
            System.err.println("AFTER");
            try {
                byte[] screenshot = getScreenshotAs(OutputType.BYTES);
                scenario.embed(screenshot, "image/png");
            } catch (WebDriverException somePlatformsDontSupportScreenshots) {
                System.err.println(somePlatformsDontSupportScreenshots.getMessage());
            }
        }


    }

步驟文件:

package com.tests;

import com.connectors.BrowserDriverHelper;
import com.connectors.SharedDriver;
import com.connectors.FunctionLibrary;

import cucumber.api.Scenario;
import cucumber.api.java.After;
import cucumber.api.java.Before;
import cucumber.api.java.en.And;
import cucumber.api.java.en.Given;
import cucumber.api.java.en.Then;
import cucumber.api.java.en.When;
import cucumber.runtime.PendingException;
import org.openqa.selenium.*;


import java.io.File;
import java.util.List;
import java.util.concurrent.TimeUnit;
import static org.junit.Assert.*;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.support.events.EventFiringWebDriver;

/**
 * Created with IntelliJ IDEA.
 * User: stuartalexander
 * Date: 23/11/12
 * Time: 15:18
 * To change this template use File | Settings | File Templates.
 */
public class addComponentsST {
    String reportName;
    String baseUrl = BrowserDriverHelper.getBaseUrl();
    private final WebDriver driver;

    public addComponentsST(SharedDriver driver){
        this.driver = driver;
        driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
    }

    @Given("^I have navigated to the \"([^\"]*)\" of a \"([^\"]*)\"$")
    public void I_have_navigated_to_the_of_a(String arg1, String arg2) throws Throwable {
        // Express the Regexp above with the code you wish you had
        assertEquals(1,2);
        throw new PendingException();
    }

CukeRunner:

package com.tests;

import org.junit.runner.RunWith;

import cucumber.api.junit.Cucumber;

@RunWith(Cucumber.class)
@Cucumber.Options(tags = {"@wip"}, format = { "pretty","html:target/cucumber","json:c:/program files (x86)/jenkins/jobs/cucumber tests/workspace/target/cucumber.json" }, features = "src/resources/com/features")
public class RunCukesIT {
}

SharedDriver在同一個包RunCukesIT ,即com.tests

使用JUnit運行器時,膠水將成為單元測試包(在此為com.tests ),這是cucumber-jvm將“掃描”類的注釋。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM