Проблема с Google Guice при перезаписи моей хэш-карты для каждого теста - PullRequest
0 голосов
/ 17 июня 2020

Я недавно перешел на Google Guice, и теперь мои результаты перезаписываются для каждого теста вместо добавления всех тестов. Я использую хэш-карту для сбора данных о прохождении и сбое каждого теста, но вместо сбора данных для каждого теста он перезаписывает предыдущий. Я использую свои инъекции в своем конструкторе. Используя Selenium, Cucumber, Java и Eclipse.

AbstractDriver

public abstract class AbstractDriver {
    protected abstract WebDriver createDriver();
    public abstract WebDriver getDriver();  }

Драйвер

public class Driver extends AbstractDriver {
    protected WebDriver driver;
    private ChromeDriverService ChromeService;  
    protected Messages msg = new Messages();    

    @Override
    protected WebDriver createDriver() {
        try {
             System.setProperty(CHROME.getEXE(), CHROME.getPath());
             System.setProperty(ChromeDriverService.CHROME_DRIVER_SILENT_OUTPUT_PROPERTY, "true");
               ChromeService = new ChromeDriverService.Builder()
                .usingDriverExecutable(new File(CHROME.getPath()))
                .usingPort(CHROME.getNodes())
                .build();                 

        }catch(IllegalStateException e) {
            msg.switchMessages("DriverErrorMessage");       
        }               
        return driver = new ChromeDriver(ChromeService,CHROME.getCHROME_DC());
    }

    @Override
    public WebDriver getDriver() {
        if (driver == null) {
            this.createDriver();
        }
        return driver;
    }
}

База драйвера

@ScenarioScoped
public class DriverBase {
        public WebDriver driver = new Driver().getDriver();
    }

База страницы

public class PageBase {
    protected DriverBase web;

    public PageBase(DriverBase  web) {
        this.web = web;
        PageFactory.initElements(web.driver, this);
    }

Объект страницы

public class PageObject extends PageBase {


    /** NOTES -> Constructor*/
    @Inject
    public PageObject(DriverBase web) {
        super(web);
    }

    public String getTitle() {  
        web.driver.get("https://stackoverflow.com/");
        String title = web.driver.getTitle();
        return title;
    }

    public String getGoogleTitle() {    
        web.driver.get("https://google.com/");
        String title = web.driver.getTitle();
        return title;
    }
}

Шаги

public class Steps  {

    private DriverBase web;
    PageObject pageobj;
    Results result;
    String results = null;

    @Inject
    Steps( DriverBase web,PageObject pageobj){
        this.web = web;
        this.pageobj= pageobj;
    }

    @Then("Check title") 
    public void test() throws IOException, ParseException { 
    String title = pageobj.getTitle();
    if(title.equals("stackoverflow"))
    {
        results = "pass";
    }else if(!title.equals("stackoverflow")) {
        results = "fail";       
    }
    result.createResult(results);
        }

    @Then("Check Google title") 
    public void test2() throws IOException, ParseException {    
    String title = pageobj.getGoogleTitle();
    if(title.equals("google"))
    {
        results = "pass";
    }else if(!title.equals("google")) {
        results = "fail";       
    }
    result.createResult(results);
        }

Результат

    public class Results {  
        ArrayList<Map<String, String>> PlanResult = new ArrayList<>();  

       public void createResult(String result ) throws IOException,ParseException { 

           Map<String, String> CaseResult= new HashMap<String, String>(){{put("result", result) ;}};;  


          PlanResult.add(CaseResult);
          System.out.println("Case Result: " + PlanResult);           
}
    }

Метод, который собирает успешные или неудачные результаты и сохраняет их в массиве. Поле хэш-карты: PlanResult .

ArrayList> PlanResult = new ArrayList <> ();

Также пробовал @ Singleton

1 Ответ

0 голосов
/ 23 июня 2020

Я понял - нужно добавить @ScenarioScoped в мой класс шагов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...