Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/17.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 如何创建一个可通过测试套件使用的数据提供程序?_Java_Spring_Unit Testing_Testng - Fatal编程技术网

Java 如何创建一个可通过测试套件使用的数据提供程序?

Java 如何创建一个可通过测试套件使用的数据提供程序?,java,spring,unit-testing,testng,Java,Spring,Unit Testing,Testng,我有一个应用程序,其中一个项目可以运行20分钟。这是因为我必须模拟创建大量依赖于其他对象的对象,而其他对象又依赖于不同的对象集。例如,我想测试一个消息传递类。但是,消息可能依赖于用户或其权限。因此,我想重新创建一个场景,在这个场景中,我将10000条消息分配给500个具有不同权限的用户,这意味着他们可能无法看到消息 我有很多ControllerTest,它们通过每次启动ControllerTest时创建数千个对象来测试这类事情。因为它是手动操作的,每次连接到数据库都会占用很多时间 是否有某种方法

我有一个应用程序,其中一个项目可以运行20分钟。这是因为我必须模拟创建大量依赖于其他对象的对象,而其他对象又依赖于不同的对象集。例如,我想测试一个消息传递类。但是,消息可能依赖于用户或其权限。因此,我想重新创建一个场景,在这个场景中,我将10000条消息分配给500个具有不同权限的用户,这意味着他们可能无法看到消息

我有很多ControllerTest,它们通过每次启动ControllerTest时创建数千个对象来测试这类事情。因为它是手动操作的,每次连接到数据库都会占用很多时间

是否有某种方法可以通过应用程序、特定包或项目一次性完成此操作?我想测试一个有100个控制器测试用例的包,但我想创建这些对象一次,并根据需要提供给他们


我正在使用TestNg和Spring

TestNG的@Dataprovider支持任何对象:


但是,如果您必须多次创建非常大的图形,那么创建一次并使其不可变可能会更容易。

在应用程序中执行一次,您可以尝试实现onStart方法。这将确保您的设置只进行一次。您还可以输入一些并行运行的代码来加快进程

如果要对软件包执行特定设置。您可以查看onStart方法。运行时,将包添加到

或者,根据您的问题陈述,我不确定您是否正在寻找数据提供程序,因为您希望您的设置只运行一次。在下面的解决方案中,它将为每个测试运行一次

但是,如果您确实希望在类之间共享一个数据提供程序,那么您可以将其放在单个类中。它需要是一个静态方法,您可以在下面的dataProviderClass属性中指定可以在其中找到它的类:sample


请查看示例java数据生成器,是否可以传入不同的对象类型,例如消息、用户、权限?我在互联网上看到的所有示例都只传递一种对象类型。jfairy似乎是一种通用解决方案,它能满足您的需求吗?
public class MyTest {
  @Test(dataProvider = "create", dataProviderClass = StaticProvider.class)
  public void test(Integer n) {
    // ...
  }
}