2012-11-06 50 views
0

我需要对以下内容做出哪些修改?TestNG处理外部系统依赖性,需要澄清

我想确保当testInternalAccess通行证和testInternalAccess不为失败计数testInsert方法只运行。

@Test 
public void testInternalAccess() { 
    URL url = null; 
    try { 
     url = new URL("http://internalpage"); 
     InputStream is = url.openConnection().getInputStream(); 
    } catch (Exception e) { 
     fail(); 
    } 
} 

@Test(groups = "database", dependsOnMethods = "testInternalAccess") 
public void testInsert() { 
    // some code 
} 

在上面的例子:

  1. testInternalAccess运行,失败和被报告为失败的测试
  2. testInsert运行和失败

或者,用TestNG例如

的创建者
@Test 
public serverStartedOk() {} 

@Test(dependsOnMethods = { "serverStartedOk" }) 
public method1() {} 

method1怎么知道服务器是否实际启动正常? serverstartedOk将如何与世界沟通它的状态?

+0

删除组参数和尝试,一切似乎是fyn! – Patton

+0

@Patton不起作用。另外'testInternalAccess'不应该被视为测试(失败并被报告为失败) – JAM

+0

你的意思是说你想在运行testInsert之前运行testinternalAcecess?无论testInternalAccess是否通过或失败,testInsert都应运行?基本上,如果父测试失败,那么子测试不会运行/执行。在另一个后面的例子中,方法serverStartedOk()将由TestNG框架运行,因此它知道测试是否失败或通过!根据测试执行的状态,框架将决定是否运行进一步的测试 – Patton

回答

1

根据我们上面的讨论,以下是简要的总结。

如你所愿,你在课堂上使用@BeforeClass

@BeforeSuite 
public void testInternalAccess() { 
    URL url = null; 
    try { 
     url = new URL("http://internalpage"); 
     InputStream is = url.openConnection().getInputStream(); 
    } catch (Exception e) { 
     fail(); 
    } 
} 

方法只运行一次,所有测试套件运行前,运行所有测试前运行的方法testinternalAcecess!而你的测试方法将会如下

@Test(groups = "database") 
public void testInsert() { 
    // some code 
} 

宾果,这将工作!