【发布时间】:2019-10-15 18:39:09
【问题描述】:
我正在使用 CANoe 10.0 进行一些诊断测试,我必须为测试生成报告。所以,我正在使用测试设置来使用 CAPL 创建我的测试用例。 我知道测试从函数“MainTest”开始。 在此之后,我不知道如何构建我的测试用例以及使用哪些函数来获得报告中的正确格式。 例如,我想发送一个诊断请求并期待一个特定的响应。我希望能够在报告中显示消息的发送、收到的响应以及预期的响应。在此基础上,应该显示判决。
【问题讨论】:
我正在使用 CANoe 10.0 进行一些诊断测试,我必须为测试生成报告。所以,我正在使用测试设置来使用 CAPL 创建我的测试用例。 我知道测试从函数“MainTest”开始。 在此之后,我不知道如何构建我的测试用例以及使用哪些函数来获得报告中的正确格式。 例如,我想发送一个诊断请求并期待一个特定的响应。我希望能够在报告中显示消息的发送、收到的响应以及预期的响应。在此基础上,应该显示判决。
【问题讨论】:
您可以在下面找到简单的示例。您可以在 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!");
}
}
【讨论】: