Solution中的auto test case组织方式

本文介绍了如何在C#中组织单元测试,包括测试方法的编写、标记及如何通过Test Explorer来运行测试。还讨论了命名空间与类的关系,以及如何正确使用using指令。

在一个solution中所有的auto test case都需要写在一个类中,即*.cs文件中。实现某一个case 我们可以写一个方法。一个方法实现一个test case。这个方法前面要用[TestMethod]标记。其所在的类之前也要标记[TestClass]。

image

所有solution中被标记过的test case的测试function都会显示在Test Explorer中。调用Test Explorer需要使用TEST-Windows-Test Explorer.

image

Run test case有几种方式

1. 在Test Explorer中选中所需运行的test case and then right click the test case, click “Run Selected Tests” menu.

image

2. In function of test case, right click any where in function and select “Run Tests” menu.

image

程序结构

多个类在一个命名空间下
类名和命名空间的名称之间没有必然联系。
在C#中任何一个.cs文件都只是一个容器一个载体,一个.cs文件中可以有多个命名空间;一个命名空间可以有多个类。
using System;
1. 这个如果在命名空间中,则说明只能是该命名空间可以用。如果同一个.cs文件中的其他命名空间则不可以使用这个引用。
2. 如果放在命名空间之外,则在这个.cs文件中的命名空间都可以用。

转载于:https://www.cnblogs.com/cynthiahuo/p/3144645.html

void text_reboot_static::reboot(const QString &i) { ui->test_record->append("开始第" + i + "次重启"); const int TIMEOUT_SEC = 360; // 设置3分钟超时 QDateTime startTime = QDateTime::currentDateTime(); QDateTime fixedTime; bool gga_fixed = false; bool ins_fixed = false; // 改造后的主循环结构 while (true) { // 1. 超时判定(正确计算已用时间) qint64 elapsed_sec = startTime.secsTo(QDateTime::currentDateTime()); if (elapsed_sec >= TIMEOUT_SEC) { ui->test_record->append("超时未完成固定,耗时3分钟"); return; } // 2. 数据池空检测与等待 if (datapool::instance()->isEmpty()) { QThread::msleep(100); // 无数据时等待100ms QCoreApplication::processEvents(); // 保持UI响应 continue; // 跳过后续处理直接进入下一轮循环 } // 3. 取出并处理数据 QString m_data = datapool::instance()->takeData(); int check_result = paraser->check_data(m_data); // 4. 解析结果处理(逻辑优化) switch (check_result) { case 0: ui->test_record->append("数据解析失败"); break; case 1: if (paraser->GGA.quality == 4 && !gga_fixed) { ui->test_record->append("[GGA已固定]"); gga_fixed = true; } break; case 3: if (paraser->INS.INS_STATUS == "INS_SOLUTION_GOOD" && paraser->INS.POS_STATUS == "INS_RTKFIXED" && !ins_fixed) { ui->test_record->append("[INS已固定]"); ins_fixed = true; } break; } // 5. 双条件完成检测 if (gga_fixed && ins_fixed) { fixedTime = QDateTime::currentDateTime(); qint64 elapsed = startTime.msecsTo(fixedTime); ui->test_record->append("检测完毕!"); ui->test_record->append("启动时间: " + startTime.toString("hh:mm:ss.zzz")); ui->test_record->append("固定时间: " + fixedTime.toString("hh:mm:ss.zzz")); ui->test_record->append(QString("耗时: %1 毫秒").arg(elapsed)); return; } // 6. 事件循环处理与节奏控制 QCoreApplication::processEvents(); QThread::msleep(100); // 保持1Hz检测频率 } } void text_reboot_static::long_time_static(const QString &time) { // 参数有效性验证 bool conversionOk; int hours = time.toInt(&conversionOk); if (!conversionOk || hours <= 0) { qWarning() << "无效的时间参数:" << time; return; } // 初始化计时器 const auto timeout = std::chrono::hours(hours); const auto startTime = std::chrono::steady_clock::now(); // 主循环逻辑 while (true) { const auto currentTime = std::chrono::steady_clock::now(); const auto elapsed = currentTime - startTime; // 计算进度百分比(50-100) // double progress = 50.0 + (50.0 * (elapsed.count() / static_cast<double>(timeout.count()))); // ui->progressBar->setValue(static_cast<int>(progress)); // this->take_data(); qInfo()<< QDateTime::currentDateTime(); // 超时判断 if (elapsed >= timeout) { ui->test_record->append("长时间静态检测完毕,请查看日志结果"); // ui->progressBar->setValue(100); // 确保到达100% break; } // 6. 事件循环处理与节奏控制 QCoreApplication::processEvents(); QThread::msleep(100); // 保持1Hz检测频率 } }第二个函数老感觉有问题
03-13
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值