简介

UTA 可以使用代码中可用的工厂方法在测试生成期间创建对象。需要在 Javadoc 中将单个方法标记为工厂方法(请参阅标记工厂方法),这样 UTA 就能发现这些方法并在创建测试时使用它们初始化对象。

您可以配置 UTA 以自动发现您标记的工厂方法,或者手动指示 UTA 在项目中搜索这些方法(请参阅扫描工厂方法)。

标记工厂方法

您可以在公共非内部类中标记公共静态方法。方法必须返回不包含有界类型参数的复杂类型。您可以通过以下方式之一标记方法:

在以下示例中,标记了 createMyObject 方法:

public class MyObjectFactory {
    /**
     * @jtest.factory
     */
    public static MyObject createMyObject(int param) {
        return new MyObject(param);
    }
}

如果未标记该方法,UTA 不会在测试创建期间使用它,myObject 将初始化为 null:

@Test
public void testMyMethodUnderTest() throws Throwable {
    // When
    MyObject myObject = null;
    String results = myMethodUnderTest(myObject);

    // Then
    // assertEquals("", results);
}

如果标记该方法,UTA 将在测试期间使用它创建对象,代码如下所示:

@Test
public void testMyMethodUnderTest() throws Throwable {
    // When
    int param = 0;
    MyObject myObject = MyObjectFactory.createMyObject(param);
    String results = myMethodUnderTest(myObject);

    // Then
    // assertEquals("", results);
}

标记的工厂方法与使用该方法的测试必须在同一个项目中。

如果想要 UTA 使用另一个项目中标记的工厂方法,则需要在生成测试的项目中创建一个新的方法,将其标记为工厂方法,并指向要使用的外部工厂方法:

public class TestUtil {
    /**
     * @jtest.factory
    */
    public static MyObject createMyObject() {
        return MyObjectFactory.createMyObject(3);
    }
}

取消标记工厂方法

您可以通过以下方式之一从 Javadoc 删除 @jtest.factory 标记:

扫描工厂方法

通过启用自动发现标记的工厂方法选项,可以配置 UTA 自动扫描所有项目中标记的工厂方法;请参阅配置首选项。启用此选项后,UTA 将在 IDE 启动时自动扫描您的项目,并在工厂方法视图中显示发现的工厂方法:

修改项目后(例如创建或保存 Java 文件,或者创建或删除新项目)视图会自动更新。

或者,您可以手动指示 UTA 扫描您的代码以检测标记的工厂方法。

  1. 从 IDE 菜单栏选择 Parasoft> 显示视图> 工厂方法打开视图。

  2. 在 Package Explorer 中选择项目。

    UTA 不会扫描在 Project Explorer 或导航器中选择的项目。

  3. 点击工厂方法菜单中的扫描工作区域或者扫描选定的项目按钮,开始扫描特定项目或整个工作空间中的工厂方法:


使用工厂方法

当您使用以下选项之一时,将在测试生成期间自动使用被 UTA 发现并在工厂方法视图中显示的工厂方法: