我第一次使用JUnit,而我被要求做的是以编程方式通过调用'来运行Junit测试。它来自一个java程序。 (所有这些都在Eclipse中) 请注意,右键单击包含Junit测试的文件并选择“Run as Junit test'工作得非常好。下面是我在eclipse中的项目结构(由于我是新用户,因此无需粘贴图像,因此提供链接) -
http://postimg.org/image/gplfswqm1/
我用maven来获得所需的所有罐子。我也粘贴了pom.xml,以防结果相关 -
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.so.generic.automation</groupId>
<artifactId>GenericAutomation</artifactId>
<version>1.0</version>
<properties>
<maven.compiler.version>2.3.2</maven.compiler.version>
<selenium.version>2.39.0</selenium.version>
<junit.version>4.11</junit.version>
</properties>
<build>
<resources>
<resource>
<directory>src/main/java</directory>
</resource>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
<testResources>
<testResource>
<directory>src/test/java</directory>
</testResource>
<testResource>
<directory>src/test/resources</directory>
</testResource>
</testResources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven.compiler.version}</version>
<configuration>
<encoding>UTF-8</encoding>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-firefox-driver</artifactId>
<version>${selenium.version}</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-support</artifactId>
<version>${selenium.version}</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.10-FINAL</version>
</dependency>
<dependency>
<groupId>org.eclipse.core</groupId>
<artifactId>org.eclipse.core.resources</artifactId>
<version>3.7.100</version>
</dependency>
<dependency>
<groupId>org.eclipse.jdt</groupId>
<artifactId>core</artifactId>
<version>3.3.0-v_771</version>
</dependency>
</dependencies>
</project>
在src / main / java中,我的Java程序在Framework.java文件中 在src / test / java中,我有一个名为ProjectSpecificTests.java的Junit测试
我需要做的是以某种方式从Framework.java中运行此ProjectSpecificTests.java。我尝试从Java代码启动命令提示符并调用java -cp .....,但我无法清楚地理解我应该通过哪些参数,因为我不断收到NoClassDefFoundException,ClassNotFoundException等的错误。如果我明确的话提到罐子的位置,就像这里 -
javac -cp "C:\\Users\\himanshuc\\.jenkins\\war\\WEB-INF\\lib\\hamcrest-core-1.3.jar";"C:\\Users\\himanshuc\\.m2\\repository\\org\\seleniumhq\\selenium\\selenium-firefox-driver\\2.42.0";"C:\\Users\\himanshuc\\.m2\\repository\\org\\seleniumhq\\selenium\\selenium-api\\2.42.0";"C:\\Users\\himanshuc\\.m2\\repository\\org\\seleniumhq\\selenium\\selenium-parent\\2.42.0";"C:\\Users\\himanshuc\\.m2\\repository\\org\\seleniumhq\\selenium\\selenium-remote-driver\\2.42.0";"C:\\Users\\himanshuc\\.m2\\repository\\org\\seleniumhq\\selenium\\selenium-support\\2.42.0";"C:\\Users\\himanshuc\\.m2\\repository\\junit\\junit\\4.11\\junit-4.11.jar" org.junit.runner.JUnitCore ProjectSpecificTests.java
我是从文件夹里面运行的 -
G:\FrameWorkSpace_HC\GenericAutomation\src\test\java\com\so\junit\tests
然后抛出新的错误消息,如 -
ProjectSpecificTests.java:8: error: package com.so.generic.framework does not ex
ist
import com.so.generic.framework.Framework;
^
ProjectSpecificTests.java:12: error: cannot find symbol
static Framework objFramework;
^
symbol: class Framework
location: class ProjectSpecificTests
error: Class names, 'org.junit.runner.JUnitCore', are only accepted if annotatio
n processing is explicitly requested
ProjectSpecificTests.java:18: error: cannot find symbol
objFramework = new Framework();
^
symbol: class Framework
location: class ProjectSpecificTests
4 errors
任何人都可以指导我在这里缺少什么?我可以使用任何解决方案来实现最终结果,而不一定是命令提示符。
如果问题描述太长,我很抱歉。这是我第一次尝试在这个论坛上提问。如果我犯了任何错误,请道歉。
答案 0 :(得分:0)
呼!现在就开始工作了。以下是面向类似问题的任何人的解决方案,需要详细的解决方案 -
对于普通的JAVA文件
编译它。我需要进入包含我的java文件(Framework.java)的文件夹。现在,在这个文件中,我调用了其他文件中定义的方法。因此,仅编译此文件会引发错误。所以,我必须这样做 -
javac -cp <list of all jars separated by ;> *.java
如,
javac -cp "C:\Program Files\Java\jre8\lib\ext\sunmscapi.jar";"C:\Program Files\Java\jre8\lib\ext\sunpkcs11.jar";"C:\Program Files\Java\jre8\lib\ext\zipfs.jar"; *.java
运行此功能。我的Framework.java文件位于文件夹C:\ abc \ xyz \ src \ main \ java \ com \ so \ generic \ framework \ Framework.java下,因此要确保java可以跟踪包com.so.generic.framework,我向上移动了几个文件夹直到'java'并从那里打开命令提示符。然后我打字 -
java -cp "C:\Program Files\Java\jre8\lib\ext\sunpkcs11.jar";"C:\Program Files\Java\jre8\lib\ext\zipfs.jar";"G:\abc\xyz\src\main\java" com.so.generic.framework.Framework
请注意在类路径中添加最后一个参数“G:\ abc \ xyz \ src \ main \ java”以使其工作。
适用于JUnit测试 编译过程保持完全相同。但是要运行,我们需要更改最后一位。我们不是简单地编写com.so.generic.framework.Framework(在本例中为com.so.junit.tests.ProjectSpecificTests),而是写下这个 -
java -cp "C:\Program Files\Java\jre8\lib\ext\sunpkcs11.jar";"C:\Program Files\Java\jre8\lib\ext\zipfs.jar";"G:\abc\xyz\src\main\java";"G:\FrameWorkSpace_HC\GenericAutomation\src\test\java" org.junit.runner.JUnitCore com.so.junit.tests.ProjectSpecificTests
希望这对其他人有用。
侨