2016-10-03 5 views
0

Ich habe eine benutzerdefinierte Annotation I wie unten erstelltZugriff auf Werte in Anmerkung eines Tests in einer anderen Klasse - testng

import java.lang.annotation.Retention; 
import java.lang.annotation.RetentionPolicy; 

@Retention(RetentionPolicy.RUNTIME) 
public @interface TestConfig { 
    String[] value(); 
} 

I-Test, die eine BaseClass erstreckt.

import org.testng.annotations.Test; 

public class MyTest extends BaseClass { 

    @Test 
    @TestConfig({ "enableCookies" }) 
    public void startTest() { 
     startInstance(); 
    } 
} 

Jetzt muss ich innerhalb @TestConfig Anmerkung in meinem BaseClass die Werte zugreifen, die unten ist

Import org.testng.annotations.BeforeSuite;

public class BaseClass { 

    public void startInstance() { 
     System.out.println("starting instance"); 
     //I need to access the value supplied in "MyTest" inside @TestConfig annotation here. How do I do that. 
    } 

    @BeforeSuite 
    public void runChecks() { 
     System.out.println("Checks done...."); 
    } 
} 

Ich weiß, ich TestConfig config = method.getAnnotation(TestConfig.class) tun können, aber wie greife ich auf die TestNG TestMethod Klasse? Bitte helfen Sie.

+0

Was wollen Sie damit zu tun? – RocketRaccoon

Antwort

1

Sie können wie etwas tun (aber den direkten Aufruf in der Testmethode entfernen):

@BeforeMethod 
public void startInstance(Method m) { 
    System.out.println("starting instance"); 
    //I need to access the value supplied in "MyTest" inside @TestConfig annotation here. How do I do that. 
    TestConfig tc = m.getAnnotation(TestConfig.class); 
    System.out.println(tc.value()); 
} 
Verwandte Themen