Какая правильная структура кода должна соблюдаться для получения наилучшего результата при использовании TestModules в Canoe? - PullRequest
0 голосов
/ 30 мая 2019

Я использую CANoe 10.0 для проведения некоторых диагностических тестов, и мне нужно создавать отчеты для тестов. Итак, я использую Test Setup для создания своих тестов с использованием CAPL. Я знаю, что тест начинается с функции «MainTest». После этого я не знаю, как структурировать свой тестовый пример и какие функции использовать, чтобы получить правильный формат в отчете. Например, я хочу отправить диагностический запрос и ожидать определенного ответа. Я хочу иметь возможность показать в отчете, отправку сообщения, какой ответ был получен и какой ответ ожидался. На основании этого должен отображаться вердикт.

1 Ответ

0 голосов
/ 31 мая 2019

Ниже вы можете найти простой пример.Дополнительные примеры и другие варианты использования вы можете найти в справке и примерных конфигурациях CANoe, предоставленных Vector. Перед первой попыткой не забудьте добавить файл 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!");
}

} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...