tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
1
ZUGRIFFE
912
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    linuxmensch linuxmensch ist offline Grünschnabel
    Registriert seit
    Apr 2007
    Beiträge
    3
    Hi @all,

    ich hab hier einige Tests die im Rahmen von Integrations Tests für Maven in TestNG geschrieben wurden. Mittlerweile wurden einige Tests aber so wichtig das auch die Live Maschinen damit getestet werden sollen. Um dies nun möglichst sinnvoll zu machen gibt es einige Tests die verschiedene Werte ermitteln und an das Monitoringsystem weiterleiten um bei Grenzüberschreitungen einen Alarm auszulösen.

    Es gibt einen Test z.B. ein Selenium Test innerhalb dessen wird eine Variable mit einem Wert befüllt.

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    
    package com.keepcoding.test;
     
    import static org.testng.AssertJUnit.*;
    import org.testng.annotations.*;
    import com.thoughtworks.selenium.*;
     
    public class TestClass {
     
     private Selenium selenium;
     private Object myResult = null;
     @BeforeClass
     @Parameters({"selenium.host","selenium.port","selenium.browser","selenium.url"})
     public void startSelenium(String host, String port, String browser, String url) {
      
      this.selenium = new DefaultSelenium(host, Integer.parseInt(port), browser, url);
            this.selenium.start();
            this.selenium.open(url);
            
     }
     
     @AfterClass(alwaysRun=true)
     public void stopSelenium() {
      this.selenium.stop();
     }
     
     @Test
     @Parameters({"search","expected"})
     public void googling(String search, String expected) {
      try {
     
       [COLOR="Red"]myResult = new String("Irgendwas");[/COLOR]
     
      } catch (SeleniumException e) {
       fail(e.getMessage());
      }
     }
    }

    Die testng.xml:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    
    <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
    <suite name="DevelEnvSuite" verbose="3">
        <parameter name="selenium.host" value="localhost"></parameter>
        <parameter name="selenium.port" value="4444"></parameter>
        <parameter name="selenium.browser" value="*firefox3"></parameter>
        <parameter name="selenium.url" value="http://localhost:7080/"></parameter>
      
      <test name="MyFirstTestCase">
        <parameter name="search" value="SearchString"></parameter>
        <parameter name="expected" value="ExpectedString"></parameter>
        
       <classes>
        <class name="com.keepcoding.test.TestClass"></class>
       </classes>
      </test>
      
    </suite>


    Aufgerufen wird der Test durch ein Monitoringsystem durch folgendes:
    Code :
    1
    2
    3
    4
    5
    
    TestNG testng = new TestNG();
    testng.setTestJar(fdo.getAbsolutePath());
    testng.setOutputDirectory(tmp.getAbsolutePath());
    testng.run();
    status = testng.getStatus();


    Wie komme ich an den Inhalt der Variablen myResult?


    Vorab schon einmal vielen Dank.
     

  2. #2
    linuxmensch linuxmensch ist offline Grünschnabel
    Registriert seit
    Apr 2007
    Beiträge
    3
    Hiho

    war eigentlich ganz einfach man definiert einen Listener und setzt im TestNG - Testcase das Attribute

    Die Testclass
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    
    package com.keepcoding.test;
     
    import org.testng.ITestContext;
    import org.testng.annotations.AfterClass;
    import org.testng.annotations.Parameters;
    import org.testng.annotations.Test;
     
    public class TestClass {
     
     
     
     @Test
     @Parameters({"search","expected"," ITestContext"})
     public void googling(String search, String expected,  ITestContext  ITestContext) {
      ITestContext.setAttribute("myResult", new String("Hello World"));
      
     }
    }

    Die testng.xml

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
    <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
    <suite name="DevelEnvSuite" verbose="3">
        
      <test name="MyFirstTestCase">
        <parameter name="search" value="SearchString"></parameter>
        <parameter name="expected" value="ExpectedString"></parameter>
        
       <classes>
        <class name="com.keepcoding.test.TestClass"></class>
       </classes>
      </test>
      
    </suite>

    Der Testaufrufer:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    
    public static void runTest(){
        File f = new File("PATH/TO/FILE");
        System.out.println("file Exists? " + f.exists());
        TestListenerAdapter tla = new TestListenerAdapter();
        TestNG t = new TestNG();
        t.setTestJar(f.getAbsolutePath());
        t.addListener(tla);
        t.run();
        List<ITestContext> lst = tla.getTestContexts();
        for (ITestContext c : lst){
            System.out.println("\n MyValues: " + c.getAttribute("myResult"));
        }
        
        
        System.out.println("end");
    }
     

Ähnliche Themen

  1. Jboss Seam mit TestNG
    Von newil80 im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 1
    Letzter Beitrag: 30.03.10, 15:46
  2. Threads mehrere Return values
    Von SCIPIO-AEMILIANUS im Forum VisualStudio & MFC
    Antworten: 1
    Letzter Beitrag: 15.11.08, 11:47
  3. Interessanter IBM Artikel über automatisches GUI testen mit TestNG
    Von Thomas Darimont im Forum Java Technology News
    Antworten: 0
    Letzter Beitrag: 07.03.07, 23:44
  4. IBM Artikel vergleicht TestNG mit JUnit 4
    Von Thomas Darimont im Forum Java Technology News
    Antworten: 2
    Letzter Beitrag: 31.08.06, 09:26
  5. TestNG als schicker Ersatz für JUnit?
    Von Thomas Darimont im Forum Java
    Antworten: 0
    Letzter Beitrag: 21.10.05, 21:31