Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Запуск с терминала


(Руслан) #1

Всем привет , в общем есть такая проблема :

написал примитивные тесты, запустил - отработали

сделал новый проект, начал дорабатывать…в IDE запускаются, терминал ругается :smile:

import BookingExecute;
import net.thucydides.core.annotations.Managed;
import net.thucydides.core.annotations.ManagedPages;
import net.thucydides.core.annotations.Steps;
import net.thucydides.core.annotations.Story;
import net.thucydides.core.pages.Pages;
import net.thucydides.junit.runners.ThucydidesRunner;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.openqa.selenium.WebDriver;

@RunWith(ThucydidesRunner.class)
@Story(Application.Booking.class)
public class Booking
{
    @Managed
    public WebDriver driver;

    @Before
    public void myTest()
    {
        driver.manage().window().maximize();
    }

    @ManagedPages(defaultUrl = "https://www..com/")
    public Pages pages;

    @Steps
    public BookingExecute action;

    @Test
    public void Booking() throws Exception
    {
        action.getMain("https://www.com/");
        action.getStarting();
        action.BookNow();
        action.FillFields();
        action.CardDetails();
        action.ConfirmBooking();
        action.CancelReservation();
    }
}

Ошибка терминала :

[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!

дальше уже не отображает тесты, видя лишь их отсутствие :

-------------------------------------------------------
 T E S T S
-------------------------------------------------------

В общем, посоздавал ещё пару проектов…при запуске с терминала во всех не находит тесты…
Есть идеи или советы? :))))


(Александр Таранков) #2

Где ошибка-то? Ты привел только варнинг от мавена, суть которого в том, что ты мавену не указываешь кодировку, поэтому он использует дефолтную системную, что не гарантирует правильность сборки на другой ОС, где может быть другая кодировка.

К запуску тестов эта ошибка отношения не имеет. Напиши подробнее в чём проблема?


(Руслан) #4

Перехожу в директорию , запускаю : mvn test thucydides:aggregate


 T E S T S
-------------------------------------------------------

Results :

Tests run: 0, Failures: 0, Errors: 0, Skipped: 0

Не видит ниодного теста

может поможет :

[main] INFO net.thucydides.core.requirements.ClasspathRequirementsProviderService - Using requirements providers: [net.thucydides.core.statistics.service.AnnotationBasedTagProvider@4b125ce3, net.thucydides.core.statistics.service.FeatureStoryTagProvider@22906196, net.thucydides.core.requirements.FileSystemRequirementsTagProvider@34f6d094, net.thucydides.core.requirements.AnnotationBasedTagProvider@37f7bfb6]
[main] INFO net.thucydides.core.requirements.ClasspathRequirementsProviderService - ADDING REQUIREMENTS PROVIDER net.thucydides.core.requirements.FileSystemRequirementsTagProvider@34f6d094
[main] INFO net.thucydides.core.requirements.ClasspathRequirementsProviderService - ADDING REQUIREMENTS PROVIDER net.thucydides.core.requirements.AnnotationBasedTagProvider@37f7bfb6
[main] INFO net.thucydides.core.requirements.RequirementsTagProvider - Reading requirements from net.thucydides.core.requirements.FileSystemRequirementsTagProvider@34f6d094
[main] INFO net.thucydides.core.requirements.RequirementsTagProvider - Reading requirements from net.thucydides.core.requirements.AnnotationBasedTagProvider@37f7bfb6
[main] INFO net.thucydides.core.requirements.RequirementsTagProvider - Requirements found:[]



java.lang.NullPointerException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    	at java.lang.reflect.Method.invoke(Method.java:606)
    	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
    	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
    	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
    	at net.thucydides.junit.runners.ThucydidesStatement.evaluate(ThucydidesStatement.java:21)
    	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
    	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
    	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
    	at net.thucydides.junit.runners.ThucydidesRunner.runChild(ThucydidesRunner.java:413)
    	at net.thucydides.junit.runners.ThucydidesRunner.runChild(ThucydidesRunner.java:64)
    	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
    	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
    	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
    	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
    	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
    	at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
    	at net.thucydides.junit.runners.ThucydidesRunner.run(ThucydidesRunner.java:239)
    	at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:53)
    	at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:123)
    	at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:104)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    	at java.lang.reflect.Method.invoke(Method.java:606)
    	at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:164)
    	at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:110)
    	at org.apache.maven.surefire.booter.SurefireStarter.invokeProvider(SurefireStarter.java:175)
    	at org.apache.maven.surefire.booter.SurefireStarter.runSuitesInProcessWhenForked(SurefireStarter.java:107)
    	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:68)

(Aleksey) #5

Попробуйте использовать integration-test гоал вместо test
mvn integration-test thucydides:aggregate


(Руслан) #6

спасибо, но та же ситуация :slight_smile:


(Руслан) #7

в общем кое-чего добился…

import net.thucydides.core.annotations.Managed;
import net.thucydides.core.annotations.ManagedPages;
import net.thucydides.core.annotations.Steps;
import net.thucydides.core.annotations.Story;
import net.thucydides.core.pages.Pages;
import net.thucydides.junit.annotations.Concurrent;
import net.thucydides.junit.runners.ThucydidesRunner;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.openqa.selenium.WebDriver;

@RunWith(ThucydidesRunner.class)
@Story(Application.TestHomePage.class)
@Concurrent(threads="5")
public class TestHomePage
{
    @Managed
    public WebDriver driver;

    @Before
    public void myTest() {
        driver.manage().window().maximize();
    }

    @ManagedPages(defaultUrl = "https://www..com/")
    public Pages pages;

    @Steps
    public LoginMain action;
    public BookingExecute get;


    @Test
    public void start()throws Exception
    {
        get.getMain("https://www..com/");
        get.Starting();
    }

}

import net.thucydides.core.annotations.Step;
import net.thucydides.core.pages.Pages;
import net.thucydides.core.steps.ScenarioSteps;

public class BookingExecute extends ScenarioSteps
{
    public BookingExecute (Pages pages)
    {
        super(pages);
    }

    public Booking getBookingSteps()
    {
        return  getPages().currentPageAt(Booking.class);
    }

    @Step
    public void getMain (String url)
    {
        getBookingSteps().getMainPage(url);
    }

    @Step
    public void Starting () throws InterruptedException
    {
        getBookingSteps().ClickOnSearchHotels();
    }
}

import net.thucydides.core.annotations.findby.FindBy;
import net.thucydides.core.pages.PageObject;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;

public class Booking extends PageObject
{
    public Booking(WebDriver driver)
    {
        super(driver);
    }

    public void getMainPage(String url)
    {
        getDriver().get(url);
    }

    @FindBy(xpath = ("/html/body/div[1]/div[2]/div[2]/div[3]/div/div[3]/form/div[3]/a"))
    WebElement search_click;

    public void ClickOnSearchHotels() throws InterruptedException
    {
        search_click.click();
    }
}

import net.thucydides.core.annotations.Feature;

public class Application
{
    @Feature
    public class TestHomePage {}
}

Браузер стартует и сразу падает при выполнении теста “start”

TEST STARTED: start
--------------------------------------------------------------------
[main] INFO net.thucydides.core.Thucydides - TEST NUMBER: 1
log4j:WARN No appenders could be found for logger (org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager).
log4j:WARN Please initialize the log4j system properly.
[main] INFO net.thucydides.core.Thucydides - 

TEST PENDING: start
---------------------------------------------------------------------------------
[main] INFO net.thucydides.core.requirements.ClasspathRequirementsProviderService - Using requirements providers: [net.thucydides.core.statistics.service.AnnotationBasedTagProvider@bc7f85d, net.thucydides.core.statistics.service.FeatureStoryTagProvider@7582a7b5, net.thucydides.core.requirements.FileSystemRequirementsTagProvider@54d09858, net.thucydides.core.requirements.AnnotationBasedTagProvider@4ac1e4e8]
[main] INFO net.thucydides.core.requirements.ClasspathRequirementsProviderService - ADDING REQUIREMENTS PROVIDER net.thucydides.core.requirements.FileSystemRequirementsTagProvider@54d09858
[main] INFO net.thucydides.core.requirements.ClasspathRequirementsProviderService - ADDING REQUIREMENTS PROVIDER net.thucydides.core.requirements.AnnotationBasedTagProvider@4ac1e4e8
[main] INFO net.thucydides.core.requirements.RequirementsTagProvider - Reading requirements from net.thucydides.core.requirements.FileSystemRequirementsTagProvider@54d09858
[main] INFO net.thucydides.core.requirements.RequirementsTagProvider - Reading requirements from net.thucydides.core.requirements.AnnotationBasedTagProvider@4ac1e4e8
[main] INFO net.thucydides.core.requirements.RequirementsTagProvider - Requirements found:[]
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 2.595 sec <<< FAILURE!

(heartwilltell) #8

В фукудите нельзя указывать под анотацией @Steps сразу несколько ссылок.
Разделите:

@Steps
    public LoginMain action;
@Steps
    public BookingExecute get;

(Руслан) #9

спасибо :slight_smile: теперь стартанул тестовый проект…сейчас попробую запустить полный и отпишусь :slight_smile:


(Руслан) #10

в тестовом случае помогло…основным тестам нет…
всё та же проблема…в IDE стратуют, в терминале не хотят

mvn integration-test thucydides:aggregate

-------------------------------------------------------
 T E S T S
-------------------------------------------------------

Results :

Tests run: 0, Failures: 0, Errors: 0, Skipped: 0

import BookingExecute;
import net.thucydides.core.annotations.Managed;
import net.thucydides.core.annotations.ManagedPages;
import net.thucydides.core.annotations.Steps;
import net.thucydides.core.annotations.Story;
import net.thucydides.core.pages.Pages;
import net.thucydides.junit.runners.ThucydidesRunner;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.openqa.selenium.WebDriver;

@RunWith(ThucydidesRunner.class)
@Story(Application.Booking.class)
public class Booking
{
    @Managed
    public WebDriver driver;

    @Before
    public void myTest()
    {
        driver.manage().window().maximize();
    }

    @ManagedPages(defaultUrl = "https://www..com/")
    public Pages pages;

    @Steps
    public BookingExecute action;

    @Test
    public void Booking() throws InterruptedException
    {
        action.getMain("https://www..com/");
        action.getStarting();
        action.BookNow();
        action.FillFields();
        action.CardDetails();
        action.ConfirmBooking();
        action.CancelReservation();
    }
}

import net.thucydides.core.annotations.Step;
import net.thucydides.core.pages.Pages;
import net.thucydides.core.steps.ScenarioSteps;

public class JExecute extends ScenarioSteps
{
    public JExecute (Pages pages)
    {
        super(pages);
    }

    public JBooking getBookingSteps()
    {
        return  getPages().currentPageAt(JBooking.class);
    }

    @Step
    public void getMain (String url)
    {
        getBookingSteps().getMainPage(url);
    }

    @Step
    public void getStarting () throws InterruptedException
    {
        getBookingSteps().ClickOnSearchHotels();
    }

    @Step
    public void SelectFirstAvailable () throws InterruptedException
    {
        getBookingSteps().FirstrHotelCheckAvailability();
    }

    @Step
    public void SelectDates () throws InterruptedException
    {
        getBookingSteps().ClickOnDropDownMonth();
        getBookingSteps().SelectMonthMarch();
        getBookingSteps().SelectDates();
        getBookingSteps().SubmitDates();
    }

    @Step
    public void ClickOnBookNow() throws InterruptedException
    {
        getBookingSteps().BookNow();
    }

    @Step
    public void FillFields () throws InterruptedException
    {
        getBookingSteps().InputEmail();
        getBookingSteps().MrTitle();
        getBookingSteps().InputFirstName();
        getBookingSteps().InputLastName();
        getBookingSteps().InputAdress1();
        getBookingSteps().SelectCountry();
        getBookingSteps().InputCity();
        getBookingSteps().InputPostCode();
        getBookingSteps().InputPhoneNumber();
        getBookingSteps().ClickOnNextButton();
    }

    @Step
    public void NextButton () throws InterruptedException
    {
        getBookingSteps().ClickOnSecondNextButton();
    }

    @Step
    public void FillCard () throws InterruptedException
    {
        getBookingSteps().CardName();
        getBookingSteps().CardType();
        getBookingSteps().InputCardNumber();
        getBookingSteps().ExpMonth();
        getBookingSteps().ExpYear();
        getBookingSteps().ClickOnCompleteYourReservationButton();
    }

    @Step
    public void CancelReservation () throws InterruptedException
    {
        getBookingSteps().ClickOnCancelThisReservation();
        getBookingSteps().ClickOnModifyReservationButton();
        getBookingSteps().CancelReservationButton();
        getBookingSteps().ClickOnYesToSubmit();
    }
}

import net.thucydides.core.annotations.findby.FindBy;
import net.thucydides.core.pages.PageObject;
import org.openqa.selenium.*;

public class JBooking extends PageObject
{
    public WebDriver driver;

    public JBooking(WebDriver driver)
    {
        super(driver);
    }

    public void getMainPage(String url)
    {
        getDriver().get(url);
    }

    @FindBy(xpath = ("/html/body/div[1]/div[2]/div[2]/div[3]/div/div[3]/form/div[3]/a"))
    WebElement search_click;

    public void ClickOnSearchHotels() throws InterruptedException
    {
        search_click.click();
    }

    @FindBy(xpath = ("/html/body/div[1]/div[3]/table/tbody/tr/td[1]/div[1]/table/tbody/tr/td/table[1]/tbody/tr/td[3]/div/div[2]/a"))
    WebElement first_element;

    public void FirstrHotelCheckAvailability() throws InterruptedException
    {
        first_element.click();
    }

    @FindBy(xpath = ("(//a[contains(@href, '#')])[135]"))
    WebElement drop_down_month;

    public void ClickOnDropDownMonth() throws InterruptedException
    {
        Thread.sleep(2000);
        drop_down_month.click();
    }

..........

}

(heartwilltell) #11

После @Managed добавте (uniqueSession = true)

Что бы вышло так: @Managed (uniqueSession = true)


(Руслан) #12

добавил, тот же результат :frowning:


(heartwilltell) #13

стактрейс в студию


(Руслан) #14
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Building Unnamed - test:test:jar:1.0-SNAPSHOT
[INFO]    task-segment: [integration-test]
[INFO] ------------------------------------------------------------------------
[INFO] [resources:resources {execution: default-resources}]
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] Copying 0 resource
[INFO] [compiler:compile {execution: default-compile}]
[INFO] Nothing to compile - all classes are up to date
[INFO] [resources:testResources {execution: default-testResources}]
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory /home//Downloads/Selenium etc/test/src/test/resources
[INFO] [compiler:testCompile {execution: default-testCompile}]
[INFO] Nothing to compile - all classes are up to date
[INFO] [surefire:test {execution: default-test}]
[INFO] Surefire report directory: /home//Downloads/Selenium etc/test/target/surefire-reports

-------------------------------------------------------
 T E S T S
-------------------------------------------------------

Results :

Tests run: 0, Failures: 0, Errors: 0, Skipped: 0

[INFO] [jar:jar {execution: default-jar}]
[INFO] ------------------------------------------------------------------------
[INFO] Building Unnamed - test:test:jar:1.0-SNAPSHOT
[INFO]    task-segment: [thucydides:aggregate] (aggregator-style)
[INFO] ------------------------------------------------------------------------
[INFO] [thucydides:aggregate {execution: default-cli}]
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
log4j:WARN No appenders could be found for logger (freemarker.cache).
log4j:WARN Please initialize the log4j system properly.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 5 seconds
[INFO] Finished at: Wed Jan 08 15:30:30 EET 2014
[INFO] Final Memory: 58M/574M

(heartwilltell) #15

смущает двойной слеш после /home перепроверьте путь по которому вы запускаете билд


(Руслан) #16

это я затёр :))там всё ок :slight_smile:


(heartwilltell) #17

Покажите ваш pom.xml


(Руслан) #18
<dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.11</version>
    </dependency>
    <dependency>
        <groupId>org.hamcrest</groupId>
        <artifactId>hamcrest-all</artifactId>
        <version>1.3</version>
    </dependency>
    <dependency>
        <groupId>net.thucydides</groupId>
        <artifactId>thucydides-junit</artifactId>
        <version>0.9.228</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-simple</artifactId>
        <version>1.7.5</version>
    </dependency>
</dependencies>
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.3.2</version>
            <configuration>
                <source>1.5</source>
                <target>1.5</target>
            </configuration>
        </plugin>
        <plugin>
            <groupId>net.thucydides.maven.plugins</groupId>
            <artifactId>maven-thucydides-plugin</artifactId>
            <version>0.9.228</version>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-site-plugin</artifactId>
            <version>3.3</version>
        </plugin>
    </plugins>
</build>

(heartwilltell) #19

Я не сильно опытен в работе с Maven, но мне кажется что с вашим pom.xml что-то не так.
Попробуйте сгенерировать проект из архетипа http://mvnrepository.com/artifact/net.thucydides/thucydides-simple-archetype

Посмотрите на структуру сгенерированного pom.xml. Не забудте включить в IDE автоимпорт


(heartwilltell) #20

Если вдруг не знаете как это сделать: (на примере IntellijIDEA)

  1. Создаем новый maven проект
  2. Отмечаем галочкой Create from archetype
  3. Жмем Add Archetype…
  4. окошко приводим к такому виду - http://joxi.ru/qVjNUhjKTJA1AcD-464
  5. Жмем финиш
  6. IDE начнет загрузку всех dependencie и предложит включить автоимпорт - включаем

Результатом должен выйти тестовый проект с 2 тестами. Кста после чего можете выкинуть их нафиг и начать делать там свой. Я всегда так делаю и все ок.


(Руслан) #21

спасибо за совет , пригодится, хорошо упращает…
но всё равно, создав заново классы и закинув туда код - выдаёт ту же ошибку
IDE запускает, терминал нет