要在 Canoe 中使用 TestModules 获得最佳输出,应遵循哪个正确的代码结构?
Which is the correct code structure to be followed for getting the best output using TestModules in Canoe?
我正在使用 CANoe 10.0 进行一些诊断测试,我必须为测试生成报告。因此,我正在使用测试设置来使用 CAPL 创建我的测试用例。
我知道测试是从函数"MainTest"开始的。
在此之后,我不知道如何构建我的测试用例以及使用哪些函数来获得报告中的正确格式。
例如,我想发送一个诊断请求并期待一个特定的响应。我希望能够在报告中显示消息的发送、收到的响应以及预期的响应。基于此,应该显示判决结果。
您可以在下面找到简单的示例。您可以在 Vector.Before 提供的 CANoe 'Help' 和 "Sample Configurations" 中找到更多示例和其他用例 首先尝试请记住添加 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!");
}
}
我正在使用 CANoe 10.0 进行一些诊断测试,我必须为测试生成报告。因此,我正在使用测试设置来使用 CAPL 创建我的测试用例。 我知道测试是从函数"MainTest"开始的。 在此之后,我不知道如何构建我的测试用例以及使用哪些函数来获得报告中的正确格式。 例如,我想发送一个诊断请求并期待一个特定的响应。我希望能够在报告中显示消息的发送、收到的响应以及预期的响应。基于此,应该显示判决结果。
您可以在下面找到简单的示例。您可以在 Vector.Before 提供的 CANoe 'Help' 和 "Sample Configurations" 中找到更多示例和其他用例 首先尝试请记住添加 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!");
}
}