为了在Canoe中使用TestModules获得最佳输出,应该遵循哪种正确的代码结构?

时间:2019-05-30 06:13:10

标签: testing capl canoe

我正在使用CANoe 10.0进行一些诊断测试,并且我必须为测试生成报告。因此,我正在使用“测试设置”使用CAPL创建我的测试用例。 我知道测试从功能“ MainTest”开始。 之后,我不知道如何构造测试用例以及不知道要使用哪些函数来获取报告中的正确格式。 例如,我要发送诊断请求并期望特定的响应。我希望能够在报告中显示消息的发送,收到的响应和预期的响应。基于此,应显示判决。

1 个答案:

答案 0 :(得分:0)

下面您可以找到简单的示例。您可以在Vector提供的CANoe的“帮助”和“示例配置”中找到更多示例和其他用例。在首次尝试之前,请记住添加CDD文件,该文件将允许您将诊断服务导入CANoe环境(我使用了Vector CDD示例) 。

void MainTest()
{
TestModuleTitle ("ECU DIAGNOSTICS TEST");
TestModuleDescription ("Basic Diagnostics Test");

TestGroupBegin("ECU Extended session", "ReadPartNubmers");
ExtendedDiagnosticSession_Start();
//testcase 
//testcase 
//...
//testcase n
TestGroupEnd();

TestGroupBegin("ECU Identification", "ReadPartNubmers");
ReadSerialPartNumber();
//testcase eg  ReadSerialPartNumber()... 
//testcase 
//...
//testcase 
TestGroupEnd();  
}

testcase  ReadSerialPartNumber()
{
diagRequest ABS_ESP.Serial_Number_Read req; //Service from CDD

TestCaseTitle("TEST 1 ReadPartNumber", "Read Serial Part Number");

diagSendRequest(req);

if (TestWaitForDiagResponse(req, 2000)== 1)
{
  testReportWriteDiagResponse(req);

  if(DiagGetLastResponseCode(req) == -1) // Positive response
  {
    byte DataBuffer[50];

    diagGetRespParameterRaw(req,"SerialNumber",DataBuffer,20);// get data from response

      if(DataBuffer[0] == 0xAA)//dummy response verification
      {
         TestStepPass("Serial Number is correct");
      }
      else
      {
         TestStepFail("Wrong Part number ");
      }
  }
  else if(DiagGetLastResponseCode(req) > 0)//Negative response 
  {
    TestStepFail("Negative response received");
  }

}
else
{
  TestStepFail("No answer from ECU!");
}
}

testcase ExtendedDiagnosticSession_Start()
{
  diagRequest ABS_ESP.ExtendedDiagnosticSession_Start req; //Service from CDD, 

 TestCaseTitle("Test no 1", "Set Extended session");

diagSendRequest(req);

if (TestWaitForDiagResponse(req, 2000)== 1)
{
  testReportWriteDiagResponse(req);

  if(DiagGetLastResponseCode(req) == -1) // Positive response
  {

   TestStepPass("Positive");

  }
  else if(DiagGetLastResponseCode(req) > 0)//Negative response 
  {

    TestStepFail("ExtendedDiagnosticSession","Negative response received");
  }

}
else
{
  TestStepFail("ExtendedDiagnosticSession","No answer from ECU!");
}

}