iop*_*iop -1 c# tdd unit-testing code-coverage
我的项目总体代码覆盖率为72.86%,其中106个测试用例失败,1个跳过测试用例,925个测试用例通过.共有1032个测试用例.覆盖范围内有4个子覆盖范围:
我只知道testbusinesslogic.dll,并让测试通过.我不知道其余的(Business.dll/datalogic.dll/dataobject.dll),因为我无法调试该方法.
这是我第一次做TDD.
下面是datalogic.dll文件中的1个方法,此方法不会出现在我的失败/传递/跳过的测试用例中.这意味着什么?为什么这部分的代码覆盖率会如此之低?如何增加datalogic.dll部分的代码覆盖率?因为我没有失败的测试用例允许我像testbusinesslogic.dll一样通过它
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);
}
Run Code Online (Sandbox Code Playgroud)
所以,首先要做的事情是:你没有正确地做TDD.在TDD中,一次只能有一个失败的测试 - 你正在为其编写代码.
(当你遇到重新分解的狂热点并引入新的缺陷时,可能会有其他人,但这些是很快就能解决的急性事件.)
这是TDD的副作用,而不是目标.您使用的过程以及您在TDD中执行的操作会导致这种状态.
TDD是一项学到的技能.教程会让你开始,但要熟练需要大量的练习.但不要灰心!如果你在实际工作中这样做,开发TDD专业知识是非常愉快的.用于说明TDD的人为设想的例子是可以预见的无聊和无用的,经常是错误的.
接下来,关于测试覆盖率,您不希望包含testbusinesslogic
在总数中.您可以使用特定于测试工具的属性来排除整个DLL.对于MSTest,信息位于" 排除/包含"部分中的https://msdn.microsoft.com/en-us/library/jj159530.aspx.
此外,许多失败的测试可以在测试失败时降低代码覆盖率,因为在测试代码中抛出了异常,这导致在测试期间永远不会执行以下代码.如果您有很多这些,可能是您的测试设置不正确.
最后,除非您可以编辑DLL中的代码,否则您将无法获得成功.测试的目的是纠正缺陷.测试你无法触及的代码是没用的.
归档时间: |
|
查看次数: |
198 次 |
最近记录: |