繁体   English   中英

如何在NetBeans中安装TestNG?

[英]How to install TestNG in NetBeans?

首先,我将依赖项和存储库添加到项目的maven pom.xml文件中:

<repositories>
    <repository>
        <id>jcenter</id>
        <name>bintray</name>
        <url>http://jcenter.bintray.com</url>
    </repository>
</repositories>

 <dependency>
    <groupId>org.testng</groupId>
    <artifactId>testng</artifactId>
    <version>6.10</version>
    <scope>test</scope>
</dependency>

并进行了NetBeans的“清理和构建”。 它下载了TestNG的东西,但是项目代码仍然显示找不到所需的类。 我可以看到C:\\ Users \\ Greg.m2 \\ repository \\ org \\ testng \\ testng \\ 6.10 \\ testng-6.10.jar存在。 如果打开该jar文件,则可以看到org \\ testng \\ Assert.class存在。 NetBeans为什么找不到它?

既然失败了,我按照说明在这里设置TestNG Environment: https : //www.tutorialspoint.com/testng/testng_environment.htm

我的TESTING_HOME环境变量设置为

C:\Users\Greg\Projects\TestNG

我的CLASSPATH变量设置为

%CLASSPATH%;%TESTING_HOME%\testng-6.10.jar

是的,那个jar文件在那里。

我打开一个新的命令外壳并导航到

C:\Users\Greg\Projects\Enventive\en360\src

存在testng.xml

然后,我根据TestNG作者的文档发出以下命令

java org.testng.TestNG testng.xml

但是得到

错误:找不到或加载主类org.testng.TestNG

在NetBeans 8.2中,我可以使用以下方法创建一个TestNG类:

File>New File...>Unit Tests>TestNG Test Case

它产生测试代码,但是由于导入行中的错误,所有注释都存在错误

import static org.testng.Assert.*;

哪个州

软件包org.testng不存在

如果我尝试通过下载Maven TestNG支持来在NetBeans中安装TestNG插件,然后尝试使用

Tools>Plugins>Downloaded>[navigate to downloaded org-netbeans-modules-testng-maven.nbm]>Install

它无法安装,并显示以下错误:

一些插件需要安装插件Maven Embedder。 在版本> = 2.54中需要插件Maven Embedder,但仅找到2.52.1。 以下插件受到影响:Maven TestNG支持

在“可用插件”选项卡中或在网络上搜索“ Maven Embedder”,一无所获。

问题在于,作用域标记需要“编译”,而不是“测试”。 作者的文档专门说要使用“测试”。 整日花费我在这里找到解决方案:-(

Maven编译错误[软件包org.testng.annotations不存在]

尽管此问题适用于NetBeans,但不适用于命令行。 我设法通过在-cp(classpath)参数中指定实际的jar文件来使其运行,如下所示:

java -cp C:\Users\Greg\Projects\MyCompany\MyProject\src;c:\users\Greg\Projects\TestNG\testng-6.10.jar org.testng.TestNG testng.xml

其中第一个路径是testng.xml的位置,第二个路径是jar文件。 作者的文档再次出现错误,因为它仅显示包含testng.xml的文件夹的路径。

尽管这确实找到了TestNG类和testng.xml,但是会发生异常:

线程“主”中的异常java.lang.NoClassDefFoundError:com / beust / jcommander / ParameterException

这似乎很奇怪,因为我的testng.xml不包含任何参数。 (也许应该吗?)无论如何,在jar文件中查找确实存在com / beust,但没有jcommander文件夹。

我下载了最新的testng-6.14.3.jar,并且该目录中也没有com / beust / jcommander。

这是我的testng.xml。 谁能看到问题?

<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

<suite name="E360 Test Site" verbose="10"> 
  <test name="Test Analysis Results" preserve-order="true">
    <classes>
      <class name="test.java.core.EnProjectIT">
        <methods>
          <include name="testCreateTables" />
        </methods>
      </class>
    </classes>
  </test>
</suite>

为了克服这个问题,我在pom.xml中添加了以下依赖项:

<dependency>
    <groupId>com.beust</groupId>
    <artifactId>jcommander</artifactId>
    <version>1.48</version>
</dependency>

然后像下面这样将其添加到命令行的类路径中:java -cp C:\\Users\\Greg\\Projects\\Enventive\\en360\\src;c:\\users\\Greg\\Projects\\TestNG\\testng-6.14.3.jar;c:\\users\\Greg\\Projects\\TestNG\\jcommander-1.72.jar org.testng.TestNG testng.xml

现在我得到以下错误:

在类路径中找不到类:test.java.core.EnProjectIT

好的,因此我需要将已编译的类位置而不是Java代码位置添加到类路径中。 现在看起来像这样:

java -cp C:\\Users\\Greg\\Projects\\MyCompany\\MyProject\\src;C:\\Users\\Greg\\Projects\\MyCompany\\MyProject\\target\\classes;c:\\users\\Greg\\Projects\\TestNG\\testng-6.14.3.jar;c:\\users\\Greg\\Projects\\TestNG\\jcommander-1.72.jar org.testng.TestNG testng.xml

新错误是:

无法实例化类test.java.core.EnProjectIT原因:java.lang.NoClassDefFoundError:org / kohsuke / args4j / CmdLineException

似乎我只是在踢罐子。 也许我需要将整个.m2回购放入类路径中?

好的,我找到了解决所有这些依赖性问题的聪明方法。 由于NetBeans可以正常构建项目,因此它必须具有一种将所有jar文件收集到其类路径中的方法。 果然,我在一个位置找到了所有这些文件:C:\\ Users \\ Greg \\ Projects \\ MyCompany \\ MyProject \\ target \\ ProductSnapshot \\ WEB-INF \\ lib *

我将其添加到-cp中,现在看起来像这样:

java -cp C:\Users\Greg\Projects\MyCompany\MyProject\src;C:\Users\Greg\Projects\MyCompany\MyProject\target\classes;C:\Users\Greg\Projects\MyCompany\MyProject\target\ProductSnapshot\WEB-INF\lib\* org.testng.TestNG testng.xml

好吧,我想我现在很接近。 下一个错误表明它找不到项目文件。 看来我需要从其他目录运行该程序。

java.io.FileNotFoundException:C:\\ Users \\ Greg \\ Projects \\ MyCompany \\ MyProject \\ src \\ WEB-INF \\ EnDatabaseTest.properties(系统找不到指定的路径)

它将WEB-INF \\ EnDatabaseTest.properties附加到启动目录,因此我将启动目录设为C:\\ Users \\ Greg \\ Projects \\ MyCompany \\ MyProduct \\ WebContent

我将testng.xml放在该目录中,CD到该目录,然后运行:

java -cp C:\Users\Greg\Projects\MyCompany\MyProject\WebContent;C:\Users\Greg\Projects\MyCompany\MyProject\target\classes;C:\Users\Greg\Projects\MyCompany\MyProject\target\En360-1.0.0\WEB-INF\lib\* org.testng.TestNG testng.xml

而且有效!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM