Я использую CANoe 10.0 для проведения диагностического тестирования, и мне нужно создавать отчеты для тестов. Итак, я использую Test Setup для создания своих тестовых случаев с помощью CAPL. Я знаю, что тест начинается с функции "MainTest". После этого я не знаю, как структурировать свой тестовый пример и какие функции использовать, чтобы получить правильный формат в отчете. Например, я хочу отправить диагностический запрос и ожидаю конкретного ответа. Я хочу иметь возможность показать в отчете отправку сообщения, какой ответ был получен и какой ответ ожидался. На основании этого должен быть вынесен вердикт.
Ниже вы можете найти простой пример. Дополнительные примеры и другие варианты использования вы можете найти в 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!");
}
}