Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在使用TestNG只运行特定测试用例之前运行特定方法?_Java_Unit Testing_Selenium_Automated Tests_Testng - Fatal编程技术网

Java 如何在使用TestNG只运行特定测试用例之前运行特定方法?

Java 如何在使用TestNG只运行特定测试用例之前运行特定方法?,java,unit-testing,selenium,automated-tests,testng,Java,Unit Testing,Selenium,Automated Tests,Testng,在我的测试课上,假设我有15个测试用例。在15个测试用例中,我只需要5个测试用例的通用测试数据。因此,我想编写一个方法,它将创建测试数据,但该方法将在运行这5个测试之前执行 我知道@BeforClass-它将在运行类中的任何测试之前运行,@beforethod-它将在类中的每个测试之前运行 我不想使用@BeforeClass为15个测试用例中的5个创建测试数据,因为如果我想调试一个不属于这5个测试用例的测试,它仍然会创建数据,这不是我当前测试所需要的,也会增加执行时间 使用TestNG有什么办法

在我的测试课上,假设我有15个测试用例。在15个测试用例中,我只需要5个测试用例的通用测试数据。因此,我想编写一个方法,它将创建测试数据,但该方法将在运行这5个测试之前执行

我知道
@BeforClass
-它将在运行类中的任何测试之前运行,
@beforethod
-它将在类中的每个测试之前运行

我不想使用
@BeforeClass
为15个测试用例中的5个创建测试数据,因为如果我想调试一个不属于这5个测试用例的测试,它仍然会创建数据,这不是我当前测试所需要的,也会增加执行时间


使用TestNG有什么办法吗?我可以在执行某些测试之前运行特定的方法(不使用TestNG.xml)

您可以在
@Test()中使用
dependsOnMethods

e、 g


有关完整教程,请参见您可以在
@Test()
注释中使用
dependsOnMethods

e、 g


有关完整的教程,请参见您的描述,我知道您需要一个数据提供者(确切地说,就是为多个测试用例提供相同数据的方法,或者为同一测试用例提供多个数据)

然后,您可以在测试用例上声明dataProvider,如下所示:

@Test(dataProvider = "dataProviderFor5TestCases")
public void testCase1(String name, Integer age) {
 System.out.println(name + " " + age);
}
结果将是:

Joe 43
Mary 32
因此,testCase1将使用dataProvider中创建的数据集执行两次。然而,我认为所有5个测试用例都需要相同的数据(可以实现)

现在,关于执行时间。我不是100%确定,但我相信数据是按需创建的(即,如果跳过测试用例或失败,则不会创建任何数据;但我的负载非常小,因此请尝试并让我们知道!)

OP评论后更新: 因此,您最好使用testGroups,它将适合您在测试前的设置和测试后的清理(无需为不相关的测试用例调用):

如果任何init测试方法失败(即服务器无法启动),则不会执行上述testCase1。此外,仅当testCase1成功时才会调用cleanup方法。如果希望在不考虑testCase1结果的情况下运行cleanup方法,可以像这样使用alwaysRun:

@Test(dependsOnGroups = { "cleanup"}, alwaysRun=true)
希望有帮助! 祝你好运

示例如下:

从您的描述中,我了解到您需要一个数据提供者(确切地说,就是为多个测试用例提供相同数据的方法,或者为同一测试用例提供多个数据)

然后,您可以在测试用例上声明dataProvider,如下所示:

@Test(dataProvider = "dataProviderFor5TestCases")
public void testCase1(String name, Integer age) {
 System.out.println(name + " " + age);
}
结果将是:

Joe 43
Mary 32
因此,testCase1将使用dataProvider中创建的数据集执行两次。然而,我认为所有5个测试用例都需要相同的数据(可以实现)

现在,关于执行时间。我不是100%确定,但我相信数据是按需创建的(即,如果跳过测试用例或失败,则不会创建任何数据;但我的负载非常小,因此请尝试并让我们知道!)

OP评论后更新: 因此,您最好使用testGroups,它将适合您在测试前的设置和测试后的清理(无需为不相关的测试用例调用):

如果任何init测试方法失败(即服务器无法启动),则不会执行上述testCase1。此外,仅当testCase1成功时才会调用cleanup方法。如果希望在不考虑testCase1结果的情况下运行cleanup方法,可以像这样使用alwaysRun:

@Test(dependsOnGroups = { "cleanup"}, alwaysRun=true)
希望有帮助! 祝你好运

示例如下:

TestNG仅提供对其他测试方法的依赖性。这是一种测试方法

要归档所需内容,可以执行以下操作:

@Test
void testMethod(){
     //this is your test method
     beforemethod();
}

//your before method for you test-case
void beforemethod(){
}

希望这能解决您的问题

TestNG只提供对其他测试方法的依赖性。这是一种测试方法

要归档所需内容,可以执行以下操作:

@Test
void testMethod(){
     //this is your test method
     beforemethod();
}

//your before method for you test-case
void beforemethod(){
}

希望这能解决您的问题

我可能会在一个单独的类中分离这5个测试。想象一下,可怜的灵魂试图阅读包含15个测试的测试类,并试图找出哪个设置代码属于哪个。我可能会在一个单独的类中分离出这5个测试。想象一下,可怜的灵魂试图读取包含15个测试的测试类,并试图找出哪个安装代码属于哪个。从OP的评论中可以看出:“如果我想调试一个不属于这5个测试用例的测试,它仍然会创建数据…”此解决方案具有错误的依赖性。i、 e.如果testDataSetup成功(即数据已创建),则将运行测试用例testExecute1。我不认为这是OP想要的;因为他不想在跳过测试用例或测试失败时创建数据。OP的评论是:“如果我想调试一个不属于这5个测试用例的测试,它仍然会创建数据…”此解决方案具有错误的依赖性。i、 e.如果testDataSetup成功(即数据已创建),则将运行测试用例testExecute1。我不认为这是OP想要的;因为如果测试用例被跳过或失败,他不想创建数据。我的意思是不使用java数据类型构建测试。通过测试数据,我的意思是创建资源——比如名为John、Bob、Mike的用户,或者配置一些服务器细节。此外,我想在测试执行之前将服务器重置为状态,即删除用户,重置服务器配置(我不想使用@AfterClass执行此操作,因为它将等待类的所有测试运行)您发布的内容与OP提出的略有不同。好的,TDHM,在您的反馈后更新了问题,希望我们这次能够正确回答!我的意思是不使用java数据类型构建测试。通过测试数据,我的意思是创建资源——比如名为John、Bob、Mike的用户,或者配置一些服务器细节。另外,我想在测试执行之前将服务器重置为状态,即de