C# 无法在单元测试中检索数据
我有一个关于检索数据的问题,这是我试图学习的东西,也是第一次使用它 测试失败的错误:测试方法 TestBusinessLogic.MediaDurationBLTest.OpenModelTest引发异常: 系统。异常:无法检索其他用户的媒体持续时间模型 已更新模型。请刷新并重试 MediaDurationBLTest.cs 这是主要的方法:C# 无法在单元测试中检索数据,c#,unit-testing,C#,Unit Testing,我有一个关于检索数据的问题,这是我试图学习的东西,也是第一次使用它 测试失败的错误:测试方法 TestBusinessLogic.MediaDurationBLTest.OpenModelTest引发异常: 系统。异常:无法检索其他用户的媒体持续时间模型 已更新模型。请刷新并重试 MediaDurationBLTest.cs 这是主要的方法: [TestMethod()] public void OpenModelTest() { Me
[TestMethod()]
public void OpenModelTest()
{
MediaDurationDS mds = new MediaDurationDS();
PopulateTestDataSet(mds);
MediaDurationBL target = new MediaDurationBL();
TestBusinessLogic.BusinessLogic_MediaDurationBLAccessor accessor = new TestBusinessLogic.BusinessLogic_MediaDurationBLAccessor(target);
//assign accessor to mds
accessor.mMediaDurationDataSet = mds;
int modelID = 5514;
target.OpenModel(modelID);
Assert.AreEqual(20, mds.Tables.Count, "# of tables retrieved are different");
//We are creating copy of ProjectMetricData, check if copyTable and original table are same
//except projectmetrictdata has pf&d and client does not so subtract that.
int pfanddRows = 2;
int projectMetricDataRows = accessor.mMediaDurationDataSet.ProjectMetricData.Rows.Count;
int copiedRows = projectMetricDataRows - pfanddRows;
if (copiedRows < 0)
copiedRows = 0;
Assert.AreEqual(accessor.mMediaDurationDataSet.ClientProjectMetricData.Rows.Count, copiedRows, "project metric data copy not created");
}
我猜MediaDurationTestDataSet.xml文件中有一个不正确的数据信息,如何检索正确的数据信息?接受您的异常,您在测试和OpenModel中各执行一次,我想您希望在此访问两次: 在测试设置中:
MediaDurationDS mds = new MediaDurationDS();
PopulateTestDataSet(mds);
在开放式模型中:
mMediaDurationDataSet = new MediaDurationDS();
mMediaDurationDataLayer.GetModelDetails(mMediaDurationDataSet, modelID);
例外情况是:
无法检索其他用户已创建的媒体持续时间模型
更新了模型
所以,您的PopulateTestDataSet正在访问底层系统,您会得到异常,因为它正在使用。至少显示堆栈跟踪。GetModelDetails方法内部的某些调用中存在异常。不知道它扔到哪里,因为您使用catch构造将其隐藏。目前解决此问题的唯一方法是调试更多。。另外,您知道您所做的根本不是单元测试吗?当我使用数据集可视化工具查看第mMediaDurationDataSet=new MediaDurationDS;行的数据时,我可以看到3个模型活动数据;,但是,当我调试这一行时,mMediaDurationDataLayer.GetModelDetailsMediaDurationDataSet,modelID;数据变为空。我已发布GetModelDetails方法。它无法进入foreach循环…在查看GetModelDetails后,我应该如何解决此问题?是的…我如何解决此问题?请你解释得更准确些好吗?对不起,我在这里是初学者。查看PopulateTestDataSet并找到关闭连接或释放一些资源的方法。我不知道MediaDurationDS中的代码是什么,我假设它是某个内部类。
mMediaDurationDataSet = new MediaDurationDS();
mMediaDurationDataLayer.GetModelDetails(mMediaDurationDataSet, modelID);