吐血Eclipse Maven Selenium TestNG的各种坑
刚入坑不久,有些是自己知识储备不够造成的,有些...那就是坑
在eclipse里面新建maven项目,然后添加testgn依赖,不多说,这个简单。
第一个坑:
然后在src/test/java这个文件夹里面写selenium的Java测试脚本。写完脚本,用eclipse点击run as testng test运行,毫无问题完美。
那么问题在哪?坑在哪?
在于:如果我要把写的java脚本打包成jar文件放到别的电脑上用Java命令:java -jar yourjava.jar这种方式来运行就会出现问题。
解决方案:把测试脚本放到src/main/java里面,不要放到src/test/java里面。
so easy。
第二个坑:
哪有那么简单的事儿。如果这么简单的话就不会吐血了
我们不是把java脚本打包成jar了嘛,别忘了我们的用的是testNG,testNG是不需要main()函数的。
问题来了:运行jar文件,没有main函数会报错,好吧,我添加一个main函数还不行吗。
可是这个main函数是随便添加的吗?添加的main函数能调用testng的注解标注的各种@Test吗?
不能!不能!不能!得按照testng相关的方法来添加main函数,代码如下:
Google说还有其它办法,但是没试过,所以就记录清测有效的方法
package com.qa.test;
import java.util.ArrayList;
import java.util.List; import org.testng.TestListenerAdapter;
import org.testng.TestNG; public class StartNG {
@SuppressWarnings("deprecation")
public static void main(String[] args) { System.out.println("=============This is main()===========");
System.out.println("=============Start NG==========="); TestListenerAdapter tla = new TestListenerAdapter();
TestNG testng = new TestNG();
List<String> suites=new ArrayList<String>();
suites.add("C:\\eclipse-workspace\\SeleniumFrameworkV3DD\\testng.xml");//path to xml.//注意,这里是绝对路径,这里需要改进。
testng.setTestSuites(suites);
testng.run(); }
}
好,这个坑已经解决,这是自己对maven和testng不熟悉的原因。
第三个坑:
想想啊,我要执行selenium+tetsng的测试,肯定要把这些依赖的包也打包进jar文件不,不然怎么运行呢。
于是就用了这个maven-assembly-plugin.把这段加进maven项目的POM.XML文件里。
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.1.1</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>com.qa.test.StartNG</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
然后打包成jar,在运行jar,就会出现下面的问题。

根据提示:no main manifest attribute.这是什么鬼意思。
根据大量Google结果,意思是在生成的jar包里面少了个MANIFEST.MF文件,这个文件的路径:META-INF/MANIFEST.MF
这个文件是在生成的jar包里,不是eclipse的项目文件夹里面那个。
好吧,我去打开jar包看看有没有这个文件。
一看就来气了,这个文件是存在的。
继续Google,又又一些老外说是MANIFEST.MF少了个main class参数啊。
这就郁闷了,前面添加maven-assembly-plugin的时候明明加了main class的,为何main class死活不在MANIFEST.MF这个文件里呢。
在这要吐槽eclipse,这是由于我打包是用的eclipse->run as->maven install

老子用Eclipse run as->Maven Install打包有嘛错啊,真气人。
继续 Google吧,stack上面点击率最高的就是这个了。

那么多老外点赞这恶鬼解决方案为啥在我这儿还是行不通呢, main class为啥还是没有加到那个破文件里面去呢?
继续google吧,这一来而去不知不觉就特么花了两个小时。
突然在google上搜到,要打开maven命令行去运行上面截图里的代码。
好吧,怀着试一试的心情,敲命令吧。
Oh LA,命令管用了,能在破文件里找到main class了。那还不赶快java -jar去看看。

好吧,运行正常,问题解决。
附上外国友人的链接:
点赞很多的是这个。
How can I create an executable JAR with dependencies using Maven?
https://stackoverflow.com/questions/574594/how-can-i-create-an-executable-jar-with-dependencies-using-maven?rq=1
下面这些也很有帮助。
Maven Assembly Plugin is not setting the MainClass manifest setting
https://stackoverflow.com/questions/7785456/maven-assembly-plugin-is-not-setting-the-mainclass-manifest-setting
Can't execute jar- file: “no main manifest attribute”
https://stackoverflow.com/questions/9689793/cant-execute-jar-file-no-main-manifest-attribute
How to run TestNG tests from main() in an executable jar?
https://stackoverflow.com/questions/16465695/how-to-run-testng-tests-from-main-in-an-executable-jar?rq=1
how to call testng.xml from java main method?
https://stackoverflow.com/questions/23272861/how-to-call-testng-xml-from-java-main-method?noredirect=1&lq=1
这个对maven打包的几种plugin做了比较详细的解释
https://www.baeldung.com/executable-jar-with-maven
这说明啥?Google出来类似问题一大堆,这说明maven打包在遇上testNG和eclipse那这是坑了无数开发和测试啊。
这是在main方法里面加了invoke testng @Test之后的结果, test case 1,2,3在另外一个java文件里,跟main方法不在同一个文件。

墙裂推荐
How can I create an executable JAR with dependencies using Maven?
吐血Eclipse Maven Selenium TestNG的各种坑的更多相关文章
- windows下 maven+selenium+testng项目搭建(七)
Selenium2.47.1 + Maven3.3.9 + TestNG6.8.8 windows准备好以下环境 1. Jdk,环境变量配置 2. maven环境3. eclipse 开发工具 ,ec ...
- Jenkins Maven Selenium TestNG踩坑记
1)Maven TestNG什么的都配置好了,在本地用eclipse->Run AS->MAVEN INSTALL运行正常 2) Jenkins安装了插件,也建立了MAVEN项目.MAVE ...
- 2.在Jenkins中配置及执行 maven + selenium + testng项目
1. 在Jenkins中配置Maven与Git 1)在系统管理>管理插件>可选插件 页面分别下载Git plugin 与 Maven Integration plugin插件,安装完成后再 ...
- Selenium+TestNG+Maven+Jenkins+SVN(转载)
转载自:https://blog.csdn.net/u014202301/article/details/72354069 一. 创建Maven项目,下载Selenium和TestNG的依赖(依赖可以 ...
- Selenium+TestNG+Maven(2)
转载自http://www.cnblogs.com/hustar0102/p/5885115.html selenium介绍和环境搭建 一.简单介绍 1.selenium:Selenium是一个用于W ...
- selenium从入门到应用 - 1,环境准备(Java+TestNG+Maven+Selenium)
本系列所有代码 https://github.com/zhangting85/simpleWebtest 本文将介绍一个Java+TestNG+Maven+Selenium的web自动化测试脚本环境的 ...
- maven+selenium+java+testng+jenkins自动化测试
最近在公司搭建了一套基于maven+selenium+java+testng+jenkins的自动化测试框架,免得以后重写记录下 工程目录 pom.xml <project xmlns=&quo ...
- selenium+testng+ant+jenkins 手记
会不会搭建测试平台是一般测试工程师和高级测试工程师分水岭 ----tobecrazy 我们项目有现成的测试平台,使用的是selenium grid+testng+ant+jenkins+VM 但是我平 ...
- 也谈自动化平台的搭建,另附高大上的名字---无人值守定时巡检系统(selenium+testng+ant+jenkins)
最近公司新项目改版,由于没有运维,开发则负责上线任务,并且都是手动上线,并行的项目多了,分支混乱,经常导致B项目上线覆盖A项目,导致系统不定时出现异常,老板知道了便扣了大家的绩效,作为测试这边必须想个 ...
随机推荐
- Ubuntu 18.04 启用 rc.local 设置开机启动
ubuntu18.04 不再使用initd管理系统,改用systemd. 然而systemd很难用,改变太大,跟之前的完全不同. 使用systemd设置开机启动为了像以前一样,在/etc/rc.loc ...
- 用EM4305/T5557模拟EM4100的ID卡,原理解释
用EM4305/T5557模拟EM4100,原理解释 来源: https://www.cnblogs.com/osnosn/p/10593297.html 来自osnosn的博客 写于: 2019-0 ...
- xirr函数
内部收益计算函数 曾经看过一个帖子:有一个理财产品,每年年初存入10000元,每年年底得到利息1000元.持续5年,5年后返还本金50000元:问:利率是多少?下面有个回复:每年存10000,利息10 ...
- ARC085F NRE
看了题解. 题目大意 你有一个长度为 \(N\) 的全为 \(0\) 的序列 \(A\),给你一个长度同样为 \(N\) 的 \(0/1\) 序列 \(B\),允许你对把 \(A\) 的一些区间中的数 ...
- 20175311 2018-2019-2 《Java程序设计》第四周学习总结
20175311 2018-2019-2 <Java程序设计>第4周学习总结 教材学习内容总结 这一周在上一周的基础上更进一步,主要学习了子类的继承.super关键字的用法含义.继承与多态 ...
- Android编程-Activity
重要的回调函数: onCreate():初始化activity要用的其他的组件(可以是其他的activity和contentprovider之类).调用setContentView(),设定本Acti ...
- Shiro的FormAuthenticationFilter登陆成功不跳转
http://jinnianshilongnian.iteye.com/blog/2024723 张开涛的这个配置信息有误,导致默认authc登陆成功后无法跳转 FormAuthenticationF ...
- SSM框架指的是什么
SSM(Spring+SpringMVC+MyBatis)框架集由Spring.SpringMVC.MyBatis三个开源框架整合而成, 常作为数据源较简单的web项目的框架. 其中spring是一个 ...
- json文件转换成excel
1.环境 python2.7 2.库 xlwt.demjson.json 3.code # -*- coding: utf-8 -*- import xlwt,demjson,json if __na ...
- Problem B: 故障电灯(light)
考虑对电灯进行差分:若第i个电灯和第i + 1个电灯状态不同,则在第i个位置上放一个球 这样我们就放置了不超过2n个球,且必然是偶数个 于是问题转化为:有m个球,每一步可以把一个球平移奇质数个位置,两 ...