プログラムでtestngを呼び出したかったのです。 Eclipseプラグインではありません。
「testng-6.8.21.jar」を関連付けてEclipseで実行し、以下のコードを実行しました。
import org.testng.TestNG;
public class SampCls
{
public static void main(String[] args)
{
TestNG test=new TestNG();
}
}
例外を下回る。どうすればこの例外を克服できますか。
Exception in thread "main" Java.lang.NoClassDefFoundError: com/beust/jcommander/ParameterException
at SampCls.main(SampCls.Java:12)
Caused by: Java.lang.ClassNotFoundException: com.beust.jcommander.ParameterException
at Java.net.URLClassLoader$1.run(Unknown Source)
at Java.net.URLClassLoader$1.run(Unknown Source)
at Java.security.AccessController.doPrivileged(Native Method)
at Java.net.URLClassLoader.findClass(Unknown Source)
at Java.lang.ClassLoader.loadClass(Unknown Source)
at Sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at Java.lang.ClassLoader.loadClass(Unknown Source)
... 1 more
変更:
Class cls = Class.forName("TestSuite.TestCases.AddContactHappyPath").getClass();
test.setTestClasses(new Class[] { cls });
作成者:
test.setTestClasses(new Class[] { AddContactHappyPath.class });
すべてのコードは
import org.testng.TestNG;
import com.xxx.test.others.AddContactHappyPath;
public class SampCls {
public static void main(String[] args) throws ClassNotFoundException {
TestNG test = new TestNG();
test.setTestClasses(new Class[] { AddContactHappyPath.class });
test.run();
}
}
TestNGコードは:
import org.testng.annotations.*;
public class AddContactHappyPath {
@Test()
public void AddContactHappyPathTest() {
System.out.println("hello world");
}
}
コンソール結果:
[TestNG] Running:
Command line suite
hello world
===============================================
Command line suite
Total tests run: 1, Failures: 0, Skips: 0
===============================================
Mavenプロジェクトを使用する場合は、次の依存関係を追加する必要があります。
<dependency>
<groupId>com.beust</groupId>
<artifactId>jcommander</artifactId>
<version>1.48</version>
</dependency>
クラスcom/beust/jcommander/ParameterExceptionは内部にあります
Mavenのないプロジェクトを使用する場合は、クラスパスに次のjarファイルを追加する必要があります。
jcommander-1.48.jar
このjarファイルは central.maven.org-> jcommander-1.48.jar からダウンロードできます。
私にとっての解決策は、TestNgをインストールすることでした。私はこのリンクを参照しました ここ 。私は最新バージョンのEclipseを使用していたので、EclipseMarketPlaceオプションは私には機能しませんでした。それ以外の場合は、ヘルプ->新しいソフトウェアをインストールして操作します http://dl.bintray.com/testng-team/testng-Eclipse-release/ インストール後、続行するために言及した最初のリンクを参照してください。ではごきげんよう !!
@sgrillonが正しく指摘しているように、正しいMaven依存関係が必要ですが、Uber-をパッケージ化するにはシェードプラグイン( https://maven.Apache.org/plugins/maven-shade-plugin )も必要です。簡単に実行できるように、すべてのMaven依存関係を含むjar。これはあなたのpom.xml
に含まれるべきものです:
...
<dependencies>
<dependency>
<groupId>com.beust</groupId>
<artifactId>jcommander</artifactId>
<version>1.48</version>
</dependency>
</dependencies>
...
<plugins>
...
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.3</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<shadedArtifactAttached>true</shadedArtifactAttached>
<shadedClassifierName>runnable</shadedClassifierName>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
Mavenパッケージをビルドすると、通常のmy-app-1.0-SNAPSHOT.jar
ファイルとmy-app-1.0-SNAPSHOT-runnable.jar
が取得されます。これは、次のコマンドで実行する必要があるものです。
$ Java -jar my-app-1.0-SNAPSHOT-runnable.jar
次のコマンドで確認できます。
$ jar tvf my-app-1.0-SNAPSHOT-runnable.jar
影付きのjarにはJCommanderクラス(および他のすべてのMaven依存関係のクラス)が含まれていますが、通常のjarには含まれていません。