1、首先利用eclipse Install new Software安装testng插件,地址为:http://beust.com/eclipse
这是可能提示安装插件错误安装不上,这时按照eclipse的提示地址下载插件jar包,然后放到eclipse目录下的dropins下,重新启动eclipse这样变能运行testng测试了。
2、运行的时候报错,如下:
java.lang.IllegalStateException: Native library for Attach API not available in this JRE
at mockit.internal.startup.JDK6AgentLoader.getVirtualMachineImplementationFromEmbeddedOnes(JDK6AgentLoader.java:81)
at mockit.internal.startup.JDK6AgentLoader.loadAgent(JDK6AgentLoader.java:54)
at mockit.internal.startup.AgentInitialization.initializeAccordingToJDKVersion(AgentInitialization.java:21)
at mockit.internal.startup.Startup.initializeIfNeeded(Startup.java:208)
at org.jtester.core.Startup.initializeIfNeeded(Startup.java:27)
at org.jtester.module.core.JMockitModule.init(JMockitModule.java:17)
at org.jtester.module.core.loader.ModulesLoader.loading(ModulesLoader.java:88)
at org.jtester.module.core.CoreModule.<init>(CoreModule.java:69)
at org.jtester.module.core.CoreModule.initSingletonInstance(CoreModule.java:59)
at org.jtester.testng.JTester.<clinit>(JTester.java:21)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at org.testng.internal.ObjectFactoryImpl.newInstance(ObjectFactoryImpl.java:29)
at org.testng.internal.ClassHelper.createInstance1(ClassHelper.java:374)
at org.testng.internal.ClassHelper.createInstance(ClassHelper.java:286)
at org.testng.internal.ClassImpl.getDefaultInstance(ClassImpl.java:110)
at org.testng.internal.ClassImpl.getInstances(ClassImpl.java:195)
at org.testng.internal.TestNGClassFinder.<init>(TestNGClassFinder.java:120)
at org.testng.TestRunner.initMethods(TestRunner.java:405)
at org.testng.TestRunner.init(TestRunner.java:231)
at org.testng.TestRunner.init(TestRunner.java:201)
at org.testng.TestRunner.<init>(TestRunner.java:157)
at org.testng.remote.RemoteTestNG$1.newTestRunner(RemoteTestNG.java:137)
at org.testng.remote.RemoteTestNG$DelegatingTestRunnerFactory.newTestRunner(RemoteTestNG.java:266)
at org.testng.SuiteRunner$ProxyTestRunnerFactory.newTestRunner(SuiteRunner.java:568)
at org.testng.SuiteRunner.init(SuiteRunner.java:158)
at org.testng.SuiteRunner.<init>(SuiteRunner.java:112)
at org.testng.TestNG.createSuiteRunner(TestNG.java:1246)
at org.testng.TestNG.createSuiteRunners(TestNG.java:1233)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1085)
at org.testng.TestNG.run(TestNG.java:1006)
at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:107)
at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:199)
at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:170)
Caused by: java.lang.UnsatisfiedLinkError: no attach in java.library.path
at java.lang.ClassLoader.loadLibrary(Unknown Source)
at java.lang.Runtime.loadLibrary0(Unknown Source)
at java.lang.System.loadLibrary(Unknown Source)
at sun.tools.attach.WindowsVirtualMachine.<clinit>(WindowsVirtualMachine.java:169)
由于我的项目是使用maven管理的,感觉可能和maven发生冲突了,于是禁用maven,运行eclipse:clean eclipse:eclipse后再运行项目又出现下面的错误
(后经检查发现没有和maven发生冲突,需要在pom.xml中加入
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<testNGArtifactName>test.testng.jdk15</testNGArtifactName>
<argLine>-javaagent:"${settings.localRepository}/test.jmockit/0.997/test.jmockit-0.997.jar"</argLine>
</configuration>
</plugin>
)配置后便可。
java.lang.RuntimeException: You have enable jmockit module, but JMockit has not been initialized. Check that your Java 5 VM has been started with the -javaagent:jmockit jar command line option.
at org.jtester.core.testng.JMockitHookable.<init>(JMockitHookable.java:42)
at org.jtester.core.testng.JTesterHookable.dealJMockitTestDecorator(JTesterHookable.java:125)
at org.jtester.testng.JTester.setupJTesterClass(JTester.java:28)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:80)
at org.testng.internal.Invoker.invokeConfigurationMethod(Invoker.java:543)
at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:212)
at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:138)
at org.testng.internal.TestMethodWorker.invokeBeforeClassMethods(TestMethodWorker.java:175)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:107)
at org.testng.TestRunner.privateRun(TestRunner.java:753)
at org.testng.TestRunner.run(TestRunner.java:613)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:335)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:330)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:292)
at org.testng.SuiteRunner.run(SuiteRunner.java:241)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1169)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1094)
at org.testng.TestNG.run(TestNG.java:1006)
at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:107)
at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:199)
at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:170)
根据提示,在eclipse->run->run configurations->TestNG选择所运行的测试类,在Arguments下的VM Arguments下加上
-javaagent:C:\test.jmockit-0.997.jar后便可正常运行test case了。