TestNG处理外部系统依赖性,需要澄清

时间:2012-11-06 01:47:41

标签: java junit testng

我需要对以下内容做出哪些更改?

我想确保testInsert方法仅在testInternalAccess通过且testInternalAccess不计入失败时运行。

@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运行并失败
  3. 或者,使用TestNG示例的创建者

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

    method1如何知道服务器是否真的开始正常? serverstartedOk将如何与世界进行沟通?

1 个答案:

答案 0 :(得分:1)

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

如果您希望在运行课程中的所有测试之前运行方法testinternalAcecess,请使用@BeforeClass

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

该方法仅在套件中运行所有测试之前运行一次!而你的测试方法将是下面的一些事情

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

Bingo,这会奏效!