BTW.  I converted my tests to extends from TelluriumJUnitTestCase and
ran them as JUnit tests as part of a suite and they both ran fine w/o
the problem.  This leads me to think it's a TelluriumTestNG problem
ant TestNG problem.  Below is my stack trace,

Parse configuration file: TelluriumConfig.groovy from project root
directory
Configure UI Object Builders using configuration
Configure widget modules using configuration
Configure event handler using configuration
Configure data accessor using configuration
Configure dispatcher using configuration
Configure Embedded Selenium Server using configuration
Warning: No user-extensions.js
Configure Selenium Client using configuration
hello world 2
Configure Embedded Selenium Server using configuration
Warning: No user-extensions.js
Configure Selenium Client using configuration
hello world


If we look at the order of execution:

1. configure embedded server
2. configure client
3. run test 1
4. configure embedded server
5. configure client
6. run test 2

where in the TestNG case, it was trying to configure the server 2x
before running the test.

On Jun 10, 1:15 pm, Jian Fang <[email protected]> wrote:
> FYI:  comparison of JUnit and TestNG annotations.
>
> http://www.mkyong.com/unittest/junit-4-vs-testng-comparison/
>
> On Thu, Jun 10, 2010 at 4:06 PM, Jian Fang <[email protected]> wrote:
> > Here is the code.
>
> > public abstract class TelluriumTestNGTestCase extends
> > BaseTelluriumJavaTestCase {
>
> >     @BeforeTest(alwaysRun = true)
> >     public static void setUpForTest() {
> >         tellurium = TelluriumSupport.addSupport();
> >         tellurium.start(customConfig);
> >         connector = (SeleniumConnector) tellurium.getConnector();
> >     }
>
> >     @AfterTest(alwaysRun = true)
> >     public static void tearDownForTest() {
> >         if(tellurium != null)
> >             tellurium.stop();
> >     }
> > }
>
> > You can create a test case that extends BaseTelluriumJavaTestCase. Then you
> > use @BeforeClass and @AfterClass
> > annotations to do setup and teardown in your test case. Let us know if this
> > works.
>
> > BTW, Have you tried to run multiple Tellurium TestNG test cases in an IDE?
> > Just wonder if this problem is only ant related.
>
> > Thanks,
>
> > Jian
>
> > On Thu, Jun 10, 2010 at 3:56 PM, Jian Fang <[email protected]>wrote:
>
> >> I am not sure if this is related to our changes in 0.7.0. We have changed
> >> the setup and teardown methods to use
> >> @BeforeTest and @AfterTest annotations for TelluriumTestNGTestCase so that
> >> the embedded selenium server
> >> will only be started once for multiple tests. Maybe the TestNG ant task
> >> does not handle that correctly?
>
> >> If you change your file to use TelluriumJUnitTestCase, do you have the
> >> same problem?
>
> >> The thread you mentioned was resolved because the ip in the configuration
> >> file was not correct.
>
> >> Thanks,
>
> >> Jian
>
> >> On Thu, Jun 10, 2010 at 2:06 PM, super fan 911 
> >> <[email protected]>wrote:
>
> >>> First, I am not an Ant expert.  I am trying to create an ant task to
> >>> run my tests.  Below is my ant task,
>
> >>> <target name="run-test-testng" depends="compile-test">
> >>>   <echo message="Running testng test..." />
> >>>   <testng classpathref="run.classpath" groups="${testng.groups}"
> >>> outputDir="${dir.build.report}" haltOnFailure="true" verbose="2"
> >>> suiteName="${testng.suite.name}" testName="${testng.test.name}">
> >>>          <classfileset dir="${dir.build.test}" includes="**/
> >>> SampleTest.class" />
> >>>          <classfileset dir="${dir.build.test}" includes="**/
> >>> Sample2Test.class" />
> >>>   </testng>
> >>> </target>
>
> >>> Here are my sample tests,
>
> >>> public class SampleTest extends TelluriumTestNGTestCase {
>
> >>>       �...@test(enabled=true, groups=["regression"])
> >>>        public void testXYZ() {
> >>>                openUrl("http://www.yahoo.com";);
> >>>                sleep 3000
> >>>                System.out.println("hello world");
> >>>        }
> >>> }
>
> >>> public class Sample2Test extends TelluriumTestNGTestCase {
>
> >>>       �...@test(enabled=true, groups=["regression"])
> >>>        public void testXYZ() {
> >>>                openUrl("http://www.google.com";);
> >>>                sleep 3000
> >>>                System.out.println("hello world 2");
> >>>        }
> >>> }
>
> >>> I have set "runInternally = true" in Tellurium config file.
>
> >>> Here is my stack trace,
>
> >>> run-test-testng:
> >>>     [echo] Running testng test...
> >>>   [testng] [Parser] Running:
> >>>   [testng]   Regression Testing
> >>>   [testng]
> >>>   [testng] Parse configuration file: TelluriumConfig.groovy from
> >>> project root directory
> >>>   [testng] Configure UI Object Builders using configuration
> >>>   [testng] Configure widget modules using configuration
> >>>   [testng] Configure event handler using configuration
> >>>   [testng] Configure data accessor using configuration
> >>>   [testng] Configure dispatcher using configuration
> >>>   [testng] Configure Embedded Selenium Server using configuration
> >>>   [testng] Warning: No user-extensions.js
> >>>   [testng] Configure Selenium Client using configuration
> >>>   [testng] Configure Embedded Selenium Server using configuration
> >>>   [testng] Warning: No user-extensions.js
> >>>   [testng] java.net.BindException: Selenium is already running on
> >>> port 4444. Or some other service is.
> >>>   [testng]     at
> >>> org.openqa.selenium.server.SeleniumServer.start(SeleniumServer.java:
> >>> 378)
> >>>   [testng]     at
> >>> org.openqa.selenium.server.SeleniumServer.boot(SeleniumServer.java:
> >>> 224)
> >>>   [testng]     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
> >>> Method)
> >>>   [testng]     at
>
> >>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:
> >>> 39)
> >>>   [testng]     at
>
> >>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:
> >>> 25)
> >>>   [testng]     at java.lang.reflect.Method.invoke(Method.java:597)
> >>>   [testng]     at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite
> >>> $PojoCachedMethodSiteNoUnwrapNoCoerce.invoke(PojoMetaMethodSite.java:
> >>> 229)
> >>>   [testng]     at
>
> >>> org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:
> >>> 52)
> >>>   [testng]     at
>
> >>> org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:
> >>> 121)
> >>>   [testng]     at
>
> >>> org.telluriumsource.server.SeleniumServerDaemon.run(SeleniumServerDaemon.groovy:
> >>> 142)
> >>>   [testng]     at org.telluriumsource.server.SeleniumServerDaemon
> >>> $run.call(Unknown Source)
> >>>   [testng]     at
>
> >>> org.telluriumsource.server.EmbeddedSeleniumServer.setUpSeleniumServer(EmbeddedSeleniumServer.groovy:
> >>> 63)
> >>>   [testng]     at org.telluriumsource.server.EmbeddedSeleniumServer
> >>> $setUpSeleniumServer.callCurrent(Unknown Source)
> >>>   [testng]     at
>
> >>> org.telluriumsource.server.EmbeddedSeleniumServer.runSeleniumServer(EmbeddedSeleniumServer.groovy:
> >>> 74)
> >>>   [testng]     at org.telluriumsource.server.EmbeddedSeleniumServer
> >>> $runSeleniumServer.call(Unknown Source)
> >>>   [testng]     at
>
> >>> org.telluriumsource.framework.TelluriumFramework.start(TelluriumFramework.groovy:
> >>> 145)
> >>>   [testng]     at org.telluriumsource.framework.TelluriumFramework
> >>> $start.callCurrent(Unknown Source)
> >>>   [testng]     at
>
> >>> org.telluriumsource.framework.TelluriumFramework.start(TelluriumFramework.groovy:
> >>> 154)
> >>>   [testng]     at
>
> >>> org.telluriumsource.test.java.TelluriumTestNGTestCase.setUpForTest(TelluriumTestNGTestCase.java:
> >>> 23)
> >>>   [testng]     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
> >>> Method)
> >>>   [testng]     at
>
> >>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:
> >>> 39)
> >>>   [testng]     at
>
> >>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:
> >>> 25)
> >>>   [testng]     at java.lang.reflect.Method.invoke(Method.java:597)
> >>>   [testng]     at
> >>> org.testng.internal.MethodHelper.invokeMethod(MethodHelper.java:644)
> >>>   [testng]     at
> >>> org.testng.internal.Invoker.invokeConfigurationMethod(Invoker.java:
> >>> 443)
> >>>   [testng]     at
> >>> org.testng.internal.Invoker.invokeConfigurations(Invoker.java:160)
> >>>   [testng]     at
> >>> org.testng.internal.Invoker.invokeConfigurations(Invoker.java:90)
> >>>   [testng]     at org.testng.TestRunner.beforeRun(TestRunner.java:522)
> >>>   [testng]     at org.testng.TestRunner.run(TestRunner.java:490)
> >>>   [testng]     at org.testng.SuiteRunner.runTest(SuiteRunner.java:329)
> >>>   [testng]     at
> >>> org.testng.SuiteRunner.runSequentially(SuiteRunner.java:324)
> >>>   [testng]     at org.testng.SuiteRunner.privateRun(SuiteRunner.java:
> >>> 296)
> >>>   [testng]     at org.testng.SuiteRunner.run(SuiteRunner.java:201)
> >>>   [testng]     at org.testng.TestNG.createAndRunSuiteRunners(TestNG.java:
> >>> 915)
> >>>   [testng]     at org.testng.TestNG.runSuitesLocally(TestNG.java:879)
> >>>   [testng]     at org.testng.TestNG.run(TestNG.java:787)
> >>>   [testng]     at org.testng.TestNG.privateMain(TestNG.java:952)
> >>>   [testng]     at org.testng.TestNG.main(TestNG.java:925)
> >>>   [testng] Configure Selenium Client using configuration
> >>>   [testng] hello world 2
> >>>   [testng] hello world
> >>>   [testng] PASSED: testXYZ
> >>>   [testng] PASSED: testXYZ
> >>>   [testng]
> >>>   [testng] ===============================================
> >>>   [testng]     Functional
> >>>   [testng]     Tests run: 2, Failures: 0, Skips: 0
> >>>   [testng] ===============================================
> >>>   [testng]
> >>>   [testng]
> >>>   [testng] ===============================================
> >>>   [testng] Module Testing
> >>>   [testng] Total tests run: 2, Failures: 0, Skips: 0
> >>>   [testng] ===============================================
> >>>   [testng]
> >>>   [testng] [org.testng.internal.PoolService] Shutting down
> >>> poolservice org.testng.internal.poolserv...@617e53c9 terminated:false
>
> >>> First, if I only have one class file, everything works fine.  The
> >>> problem only arise when I have 2+ test classes in the ant task.
>
> >>> This is how I understood how things worked:
>
> >>> - runInternally = true  will start the embedded selenium server for
> >>> you
>
> >>> - In TelluriumTestNGTestCase class, there is the annotated
> >>> setUpForTest an tearDownForTest methods which will start the Tellurium
> >>> server (embedded selenium server) and connects the test to it, and
> >>> stop during tear down.
>
> >>> - Looking at the execution window, I did see 2 separate browser
> >>> sessions popup and go down which leads me to think that the setup and
> >>> teardown methods did get call.  What i don't understand is where else
> >>> is an attempt to start the selenium server happening...
>
> >>> I saw this thread, but didn't find a solution there.
>
> >>>http://groups.google.com/group/tellurium-users/browse_thread/thread/d...
>
> >>> --
> >>> You received this message because you are subscribed to the Google Groups
> >>> "tellurium-users" group.
> >>> To post to this group, send email to [email protected].
> >>> To unsubscribe from this
>
> ...
>
> read more »

-- 
You received this message because you are subscribed to the Google Groups 
"tellurium-users" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/tellurium-users?hl=en.

Reply via email to