C# TDD代码覆盖状态
我的项目的总体代码覆盖率为72.86%,有106个失败的测试用例、1个跳过的测试用例和925个通过的测试用例。总共有1032个测试用例。覆盖范围内有4个子覆盖范围,分别为:C# TDD代码覆盖状态,c#,unit-testing,tdd,code-coverage,C#,Unit Testing,Tdd,Code Coverage,我的项目的总体代码覆盖率为72.86%,有106个失败的测试用例、1个跳过的测试用例和925个通过的测试用例。总共有1032个测试用例。覆盖范围内有4个子覆盖范围,分别为: BusinessLogic.dll:67.72% datalogic.dll:18.83% dataobject.dll:50.00% testbusinesslogic.dll:86.01% 我只了解testbusinesslogic.dll,并通过测试。 我不知道其余部分(Business.dll/datalogic.d
public void GetModelDataForCreate(DataSet availabilityDataSet, int resourceID)
{
Database db = WindowsApplicationTemplate.ApplicationDatabase.DatabaseFactory.CreateDatabase();
string sqlProcedure = "uspAvailabilityGetModelDataForCreate";
DbCommand dbCommand = db.GetStoredProcCommand(sqlProcedure);
UtilityDL.SetCommandTimeout(dbCommand);
db.AddInParameter(dbCommand, "resourceID", DbType.Int32, resourceID);
string[] tables = new string[] { "EventType", "LaborCategory", "Event", "IntelTime", "DurationType", "Resource", "ParameterInfo" };
availabilityDataSet.Clear();
// RETRIEVE DATA FROM DB AND LOAD INTO DATASET
db.LoadDataSet(dbCommand, availabilityDataSet, tables);
}
因此,首先要做的是:您没有正确地执行TDD。在TDD中,一次只能有一个失败的测试—您正在为其编写代码的测试 (当您达到重新分解的狂热点并引入新的缺陷时,可能还有其他缺陷,但这些都是可以迅速解决的尖锐事件。) 这是TDD的副作用,而不是目标。您在TDD中使用的过程和采取的行动导致了这种存在状态 TDD在很大程度上是一种学习技能。教程会让你开始学习,但要精通需要大量的练习。但不要灰心!如果您在实际工作中这样做,那么开发TDD专业知识是非常愉快的。可以预见,用于说明TDD的人为示例是乏味的、无用的,而且常常是错误的 接下来,关于测试覆盖率,您不希望将
testbusinesslogic
包括在总数中。您可以使用特定于测试工具的属性排除整个DLL。对于MSTest,信息位于排除/包括部分
此外,当测试失败时,许多失败的测试可能会降低代码覆盖率,因为异常会在被测试的代码中抛出,这会导致在测试期间永远不会执行以下代码。如果您有很多这样的问题,那么很可能您的测试设置不正确
最后,除非您可以在DLL中编辑代码,否则您将不会取得总体成功。测试的目的是纠正缺陷。测试您不能触摸的代码有点无用。测试覆盖率报告在运行测试时执行了多少代码 您的测试程序集testbusinesslogic.dll的覆盖率与此无关(但我觉得奇怪,它实际上不接近100%,可能会研究为什么会出现这种情况)。一个好的指标可能是其他(生产)程序集的覆盖率% 如果您想获得这些生产程序集的更高覆盖率,您需要自己在testbusinesslogic.dll中编写更多测试,在那里执行未覆盖的代码。这是提高他们测试覆盖率的唯一方法 注意:单元测试“只是为了增加代码覆盖率”通常是个坏主意。编写测试以获得安全网、回归测试、驱动设计等。但是,编写测试只是为了提高某个任意的百分比,并没有什么好处
正如Keith Payne所说,您可能正在进行测试优先开发(您的单元测试在生产代码之前就已经存在),但您并不是真正在进行测试驱动的开发。我对您的要求感到困惑。为了增加代码覆盖率,您需要编写更多的测试。为了让测试通过,你需要修改代码。我有上千个测试用例,而如果100%的代码覆盖率并不意味着代码覆盖了所有测试用例。我的问题是如何增加(1)/(2)/(3)子代码覆盖率,因为那里的百分比很低。这与“testbusinesslogic.dll”的方式相同吗?因为我可以在“testbusinesslogic.dll”中调试并找到错误,然后通过了测试。但是,对于其余3个子代码覆盖范围,我不能这样做。如果我错了,请纠正我。这正是我目前的经历。=)是的,我正在解决失败测试用例,但我只是好奇的是,我只需要解决testbusinesslogic.dll中的所有失败测试用例?BusinessLogic.dll:67.72%,datalogic.dll:18.83%,dataobject.dll:50.00%怎么样。这3个部分不会给我任何失败测试用例或错误?我如何找出代码背后发生了什么,使这些部分的代码覆盖率很低?