Удаленка для jenkins+selenide+selenoid+allure+docker спецов на 2-3 часа в день. 100% remote! Присоединиться к проекту

Не получается создать JAR файл моего авто теста на Inellij IDEA

intellij
jar
linux
java
webdriver
selenide
selenium
Теги: #<Tag:0x00007fedc45b1b98> #<Tag:0x00007fedc45b1a58> #<Tag:0x00007fedc45b18f0> #<Tag:0x00007fedc45b1738> #<Tag:0x00007fedc45b15f8> #<Tag:0x00007fedc45b14b8> #<Tag:0x00007fedc45b1378>

(Tester Testerman) #1

Доброго Времени суток! У меня вопрос как саздать JAR фаил (Запускаймый файл) моего авто теста
Я попытался сделать его по этому https://www.youtube.com/watch?v=53_tYdhdUUE уроку но на этапе выбора мэйн класса моего проекта вообще не видит.

Версии ОС Linux Ubuntu 16.04 Программа Inellij IDEA

Заранее спасибо.


(Сергей Кузьмин) #2

простите пожалуйста @TesterTesterman - вам шашечки или ехать ? наскольк я увидел в Уроке 89 они собирались паковать что то зависящее от swing ( удачи с jarом под 10 мб). Предудущик 88 уроков я честно говоря не посм
отрел. на гитхабе полно (в часности у меня есть ) проектов ‘runnable jar’ может стоит с них - но если вы предпочитаете У 89 - дело хозяйское



(Tester Testerman) #3

Спасибо за ответ! Я достаточно плохо разбираюсь в программировании та что извеняйте если что то глупое напишу…
Цель моих действий на данный момент защитить свои авторские права на мой авто тест, так получается что составленный мной авто тест нужно роздать коллегам по цеху, и мне бы не хотелось что бы они приписывали себе заслуги за мои труды поэтому мне хотелось бы создать запускаемый файл с закрытым исходным кодом.
PS. Возможно я задаюсь не правильной целью. Готов к любым советам


#4

А тест в мейне лежит или @Test?


(Alexandr D ) #5

Ваша цель - совершенно неправильная.

В правильных компаниях весь исходный код хранится в Git-репозиториях, и всё равно исходный код будет всегда доступен всем разработчикам.

Это глупо - прятать код от своих коллег.
Ваши коллеги должны делать ревью вашего кода.


(Tester Testerman) #6

Я согласен с вами но увы не всегда всё идёт так как “правильно”. Иногда хочется перестраховатся :blush:


(Tester Testerman) #7

В @Test http://joxi.ru/KAgxGVai46jdar


(Fiodar Motin) #8

Извините, но вы в корне все неправильно делаете.

  1. “защитить свои авторские права на мой авто тест” в этом нет надобности, это то же самое что все люди будут ходить по полу, а вы будете ходить по потолку.
  2. У вас в тестовом методе фигурирует driver, а этого быть не должно.
  3. В тестовом методе не надо описывать локаторы.
  4. Исходя из ошибок которые описаны в пунктах 2 и 3 можно смело сказать, что пункт 1 тем более не имеет смысла.

Поверьте никому ваш автотест не надо, в публичной доступе таких тестов миллионы.


#9

Да тут дело не в красоте кода, человек только учится делать тесты, сделал тест и хочет зажать его себе и что бы быть молодцом перед начальством и никто не смог спереть его чудо идею.


(Tester Testerman) #10

Спасибо за понимание :blush:


(Tester Testerman) #11

Ладно если не брать в рассмотрение моральную делему…
Что в создании запускаемого авто теста я делаю не правильно?


#12

Абсолютно всё.
Название тестового класса не понятное.
findElement и driver не должны присутствовать в тесте.
Название теста не понятное.
Нет паттерна PageObject.
generateRandomNumber не должно присутсовать в тестовом классе.
Да и всего теста не видно на скриншоте.


(Alexandr D ) #13

Я бы на его месте постеснялся бы такое показывать начальству :slight_smile:

А вообще не с того обучаться человек начинает.

Чтобы прятать исходные коды, надо их писать уметь, хотя бы.


(Tester Testerman) #14

Лучше не аккуратный но стабильно работающий код чем под линеечку но работающий некорректно.
У меня всё работает не разу не подводил.
Конструктивная критика это замечательно но к сожалению пока ваша критика Noksa Alexander таковой не является единственный кто мне пока помог это MOSTOR, да он сказал что у меня всё неправильно но он хотя бы дал направление куда копать, а вы все лишь осуждаете и ничего конструктивного :pensive:


(Vasiliy Rakshin) #15
  1. Вам надо создать класс со стандартным main методом (с него начнётся исполнение вашей программы). В пакете src/main/java, не в разделе с тестами.
  2. В нём (в main методе) надо программно вызвать ваш тест, примерно так (если вы используете TestNG, конечно):
TestListenerAdapter tla = new TestListenerAdapter();
TestNG testng = new TestNG();
testng.setTestClasses(new Class[] { sssddd.class }); // я тут не помню, будет авто импорт этого класса или нужно указывать полный путь к классу
testng.addListener(tla);
testng.run(); 
  1. Использовать упаковщик (для мавена), это дело прописывается в pom, например :
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>3.1.1</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        
                        <goals>
                            <goal>shade</goal>
                        </goals>
                        
                        <configuration>
                            <transformers>
                                <transformer
                                    implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                    <mainClass>имя созданного класса с main методом</mainClass>
                                </transformer>
                            </transformers>                                                    
                                                           
                        </configuration>  
                    </execution>
                </executions>
            </plugin> 
  1. сделать билд проректа, должно собраться в один джарник.

(Fiodar Motin) #16

А вот и нет, например я вам сразу показал пару моментов где стоит поработать.

У вас в тестовом методе фигурирует driver, а этого быть не должно.
В тестовом методе не надо описывать локаторы.

Касательно “У меня всё работает ни разу не подводил.” тут есть много подводных камней, например ваш подход “работает ну и ладно” будет применим к небольшой группе тестов или для демонстрации, но если тестовая система начнет расширятся и у вас будет больше тестов, то такое решение будет нестабильно.

Касательно подхода “под линейку”, эти все “линейки” придумали не просто так, они были придуманы после свершения тысячи ошибок за многие года.

Небольшой пример.

У вас в тестовом методе вы сразу ищите локатор, а что если этот же локатор вы будете использовать еще в десяти тестах? и допустим через неделю разработчик изменить его. Вопрос, вы будете менять локатор во всех 10 тестах? Из этого можно сделать вывод что может метод “под линейку” стоит рассмотреть т.к он решит вышеописанную проблему.


(Tester Testerman) #17

Спасибо большое за помощь! :blush:


(Tester Testerman) #18

Вы правы и я действительно хочу дорасти до уровня при котором смогу правильно писать код который бы был удобен в эксплуатации и разного род обгрейдах, но увы я пока что профан и двигаюсь мелкими шагами :pensive:. Мне действительно хочется расти в этой сфере и я был бы особенно благодарен если бы вы посоветовали какой нибудь курс на ютубе или блог который помог бы мне расти в правильную сторону.
Спасибо за критику и желание помочь!


(Fiodar Motin) #19

В курсах нет необходимости, вам достаточно смотреть видео на ютубе на тему Selenium и все что с ним связано в контексте вашего языка, читать стати на тему автоматизации, изучать чужие тесты на github и смотрите какими путями люди решают необходимые задачи.

Успехов вам в вашем начинании.


(Tester Testerman) #20

Я по сути так и делаю но не каждый кто снимает про Selenium понятен и полезен, а в силу моей неопытности порой тяжело отделять зёрна от плевел. :blush: