java – 功能测试(Jellytools)不在netbeans平台上启动
发布时间:2020-12-15 02:15:35 所属栏目:Java 来源:网络整理
导读:我正在尝试在现有的netbeans应用程序上添加一些功能测试. 有关应用程序的信息:由maven打包,使用netbeans平台7.3.1. 我添加了依赖关系,如何在这个 article中描述但是有异常: Running qa.FuncTestTests run: 1,Failures: 0,Errors: 1,Skipped: 0,Time elapse
我正在尝试在现有的netbeans应用程序上添加一些功能测试.
有关应用程序的信息:由maven打包,使用netbeans平台7.3.1. 我添加了依赖关系,如何在这个 article中描述但是有异常: Running qa.FuncTest Tests run: 1,Failures: 0,Errors: 1,Skipped: 0,Time elapsed: 0.067 sec <<< FAILURE! - in qa.FuncTest org.netbeans.junit.NbModuleSuite$S@67ad77a7(org.netbeans.junit.NbModuleSuite$S) Time elapsed: 0.066 sec <<< ERROR! java.lang.ClassNotFoundException: org.netbeans.Main at java.net.URLClassLoader$1.run(URLClassLoader.java:202) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:306) at java.lang.ClassLoader.loadClass(ClassLoader.java:247) at org.netbeans.junit.NbModuleSuite$S.runInRuntimeContainer(NbModuleSuite.java:819) at org.netbeans.junit.NbModuleSuite$S.access$100(NbModuleSuite.java:667) 有人知道它为什么会发生吗?以及如何解决它? application / pom.xml中的UPD依赖部分 <dependencies> <dependency> <groupId>org.netbeans.cluster</groupId> <artifactId>platform</artifactId> <version>${software.netbeans.version}</version> <type>pom</type> </dependency> <dependency> <groupId>org.netbeans.api</groupId> <artifactId>org-jdesktop-beansbinding</artifactId> <version>${software.netbeans.version}</version> </dependency> <dependency> <groupId>org.netbeans.api</groupId> <artifactId>org-netbeans-modules-nbjunit</artifactId> <version>${software.netbeans.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.netbeans.api</groupId> <artifactId>org-netbeans-modules-jellytools-platform</artifactId> <version>${software.netbeans.version}</version> <scope>test</scope> </dependency> </dependencies> UPD1测试类: package qa; import junit.framework.Test; import org.netbeans.jellytools.JellyTestCase; import org.netbeans.jellytools.OptionsOperator; import org.netbeans.junit.NbModuleSuite; import org.openide.windows.TopComponent; public class FuncTest extends JellyTestCase { public static Test suite() { return NbModuleSuite.allModules(FuncTest.class); } public FuncTest(String n) { super(n); } public void testWhatever() throws Exception { TopComponent tc = new TopComponent(); tc.setName("label"); tc.open(); OptionsOperator.invoke().selectMiscellaneous(); Thread.sleep(5000); System.err.println("OK."); } } 解决方法
我想分享一下调查结果.我注意到应用程序像往常一样在输出窗口中看到:
Installation =.../application/target/application/extra .../application/target/application/java .../application/target/application/kws .../application/target/application/platform 但是当通过nbjubit / jellytool启动应用程序时,我只看到: Installation =.../application/target/application/platform 所以我决定扩展这个值并调查源代码.让我们考虑一下NbModuleSuite.java中的一些有趣的方法: private static String[] tokenizePath(String path) { List<String> l = new ArrayList<String>(); StringTokenizer tok = new StringTokenizer(path,":;",true); // NOI18N ..... } static File findPlatform() { String clusterPath = System.getProperty("cluster.path.final"); // NOI18N if (clusterPath != null) { for (String piece : tokenizePath(clusterPath)) { File d = new File(piece); if (d.getName().matches("platformd*")) { return d; } } } String allClusters = System.getProperty("all.clusters"); // #194794 if (allClusters != null) { File d = new File(allClusters,"platform"); // do not bother with old numbered variants if (d.isDirectory()) { return d; } } .... } static void findClusters(Collection<File> clusters,List<String> regExps) throws IOException { File plat = findPlatform().getCanonicalFile(); String selectiveClusters = System.getProperty("cluster.path.final"); // NOI18N Set<File> path; if (selectiveClusters != null) { path = new TreeSet<File>(); for (String p : tokenizePath(selectiveClusters)) { File f = new File(p); path.add(f.getCanonicalFile()); } } else { File parent; String allClusters = System.getProperty("all.clusters"); // #194794 if (allClusters != null) { parent = new File(allClusters); } else { parent = plat.getParentFile(); } path = new TreeSet<File>(Arrays.asList(parent.listFiles())); } .... } 如您所见,我们可以在cluster.path.final或all.clusters中设置路径值并使用; :作为分界线.我花了一些时间来玩这个常量,并意识到设置没有在pom.xml中设置: <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>${software.maven-surefire-plugin}</version> <configuration> <skipTests>false</skipTests> <systemPropertyVariables> <branding.token>${brandingToken}</branding.token> <!--problem part start--> <property> <name>cluster.path.final</name> <value>${project.build.directory}/${brandingToken}/platform:${project.build.directory}/${brandingToken}/java:...etc</value> </property> <!--problem part end--> </systemPropertyVariables> </configuration> </plugin> 但这很好用: <properties> <cluster.path.final>${project.build.directory}/${brandingToken}/platform:${project.build.directory}/${brandingToken}/java:...etc</cluster.path.final> </properties> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>${software.maven-surefire-plugin}</version> <configuration> <skipTests>false</skipTests> <systemPropertyVariables> <branding.token>${brandingToken}</branding.token> <cluster.path.final>${cluster.path.final}</cluster.path.final> </systemPropertyVariables> </configuration> </plugin> 我不知道为什么会发生,但我建议使用maven section属性来设置maven-surefire-plugin的systemPropertyVariables.祝好运! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |