单元测试框架

已完成

Visual Studio 附带 SysTest Framework,允许您写入单元测试代码,集成测试,然后运行测试以自动执行代码测试。 您可以设置 SysTest Framework 以根据代码创建单元测试。 您还可以将任务录制器的录制内容导入到 Visual Studio 中以生成测试代码。 在本模块的后面部分提供了有关任务录制器的详细信息。

然后,您的测试可以集成到测试模块中,该模块可用于管理测试代码和 FormAdaptors。 将测试模块添加到源代码管理将允许您将您的测试与生成过程集成。 然后,本添加项将在生成期间运行您的测试代码,以验证所有功能是否按预期运行。

您还可以单独运行测试代码。 运行测试代码是一个可重复的过程,因此,创建测试类后,您可以多次运行它。 通过这些迭代,您可以持续验证代码更改。 此外,在其他开发人员修改元素后通过快速运行测试来验证您的功能是否仍然有效,这对于确保工作效率而言至关重要。

重新运行测试的选项也有助于您的组织在执行 Microsoft 发布的升级期间保持工作效率。 您可以运行这些单元测试以输入所需的数据,并运行测试流程以确定功能是否按预期执行,而无需要求用户从用户界面回归测试所有功能。

从编写测试、集成测试到执行测试的单元测试模型流程的图示。

要创建新的测试用例以测试应用程序中的功能,请按照以下步骤操作:

  1. 以管理员身份打开 Visual Studio。

  2. 选择打开项目或解决方案

  3. 从桌面文件夹选择 **FleetManagement 解决方案**。

    注意

    如果计算机上不存在解决方案文件,请转到车队管理示例应用程序的端到端方案,了解此文件的创建步骤。

  4. 在解决方案资源管理器中,右键单击车队管理解决方案

  5. 选择添加 > 新建项目

  6. 展开 Dynamics 365 项目

  7. 选择**财务和运营**作为项目类型。

  8. 将新项目命名为 FleetManagementUnitTestSample,并将位置指定为桌面上的 FleetManagement 文件夹。

  9. 选择创建

  10. 右键单击新项目并选择属性

  11. 模型属性设置为 FleetManagementUnitTest

  12. 选择确定

  13. 右键单击 FleetManagementUnitTests 项目,然后选择添加 > 新建项

    注意

    此操作会添加一个测试类,其中包含针对车队管理代码的测试。

  14. 选择测试类作为要在添加新项页面中添加的元素类型。

  15. 右键单击测试类,然后选择重命名

  16. 将新类命名为 FMUnitTestSample

    class FMUnitTestSample extends SysTestCase
     {
       public void setup()
       {
    	 // Reset the test data to be sure things are clean
    	 FMDataHelper::main(null);
       }
    
      [SysTestMethodAttribute]
       public void testFMTotalsEngine()
       {
    	  FMRental rental;
    	  FMTotalsEngine fmTotals;
     	  FMRentalTotal fmRentalTotal;
    	  FMRentalCharge rentalCharge;
    	  FMRentalTotal expectedtotal;
    	  str rentalID = '000022';
    
    	  // Find a known rental
    	  rental = FMRental::find(rentalID);
    
    	 // Get the rental charges associated with the rental
    	 // Data is seeded randomly, so this will change for each run
    	 select sum(ExtendedAmount) from rentalCharge
    		 where rentalCharge.RentalId == rental.RentalId;
    
    	 fmTotals = FMTotalsEngine::construct();
    	 fmTotals.calculateRentalVehicleRate(rental);
    
    	 // Get the totals from the engine
    	 fmRentalTotal = fmTotals.totals(rental);
    
    	 // Set the expected amount
    	 expectedTotal = rental.VehicleRateTotal + rentalCharge.ExtendedAmount;
    
    	 this.assertEquals(expectedTotal,fmRentalTotal);
    
       }
    
       [SysTestMethodAttribute]
       public void testFMCarValidateField()
       {
    	 FMCarClass fmCar;
    
    	 fmCar.NumberOfDoors = -1;
    	 this.assertFalse(fmCar.validateField(Fieldnum("FMCarClass", "NumberOfDoors")));
      }
    
     }
    
  17. 保存类。 测试资源管理器中将提供两个测试用例。

  18. 选择解决方案资源管理器 > 生成,然后右键单击 FleetManagementUnitTestSample 项目。

  19. 选择测试 > 运行所有测试测试资源管理器完成后将显示结果。

您可以创建测试模块以帮助管理您的测试代码。 将测试模块添加到源代码管理允许生成流程查找名称中包含“测试”的模块并实施测试运行。

要创建测试模块,请按照以下步骤操作:

  1. 在 Visual Studio 中,打开 Dynamics 365 > 模型管理 > 创建模型
  2. 输入包含单词“test”的模型名称、模型发布者模型描述
  3. 选择下一步,然后再次选择下一步
  4. 添加对以下模型的引用:
    • 应用程序平台
    • 应用程序基础
    • 测试要素
    • 应用程序基础窗体适配器
    • 应用程序平台窗体适配器
    • 应用程序套件电子报告集成
    • 应用程序套件窗体适配器
  5. 选择下一步
  6. 选择完成