데이터 검색에 대한 질문이 있습니다. 이는 배우려고 노력하고 있으며 처음 사용했을 때도 있습니다. 시험단위 테스트에서 데이터를 검색 할 수 없습니다.
오류 실패 : "시험 방법 TestBusinessLogic.MediaDurationBLTest.OpenModelTest 예외 던졌다 : System.Exception :. 다른 사용자 이미 모델을 업데이트했습니다 미디어 기간 모델을 검색 할 수 없습니다 새로 고침하고 다시 시도하십시오 . "
MediaDurationBLTest.cs
이 주된 방법이다
가[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");
}
이것은의 내부 코드 "target.OpenModel (modelID);"I 얻는 오류가 발생하여 즉시 "catch (Exception e)"로 바뀝니다., 내 데이터가 여기에 비어 있습니다. "mMediaDurationDataLayer.GetModelDetails (mMediaDurationDataSet, modelID); ", 오류를 어떻게 해결합니까?
public DataSet OpenModel(int modelID)
{
try
{
mMediaDurationDataSet = new MediaDurationDS();
mMediaDurationDataLayer.GetModelDetails(mMediaDurationDataSet, modelID);
//ConvertToLocalTime(mMediaDurationDataSet.Model, "ClientLastUpdateDate");
ConvertToLocalTime(mMediaDurationDataSet.ModelActivity, "ClientLastUpdateDate");
//IF MODEL IS MOR, ACT
CreateProjectForMORModel(modelID);
//COPY PROJECT METRIC DATA TABLE INTO CLIENTPROJECTMETRICDATA
foreach (MediaDurationDS.ProjectMetricDataRow pmdr in mMediaDurationDataSet.ProjectMetricData.Rows)
{
//WE DONT WANT PF&D IN CLIENT TABLE
if (!pmdr.MetricTypeName.Equals(PFANDDPARAMETER))
{
CreateClientProjectMetricDataRow(pmdr, pmdr.ProjectMetricID);
}
}
mMediaDurationDataSet.AcceptChanges();
mMediaDurationDataSet.WriteXml("C:\\MediaDurationTestDataSet.xml");
return mMediaDurationDataSet;
}
catch (Exception e)
{
string errorMessage = "Unable to retrieve Media Duration Model " +Environment.NewLine + e.Message;
throw new Exception(errorMessage);
}
}
public class MediaDurationDL
{
ProjectManagerDL mProjectManagerDL;
public void GetModelDetails(DataSet mediaDurationDataSet, int modelID)
{
Database db = X.XXX.WindowsApplicationTemplate.ApplicationDatabase.DatabaseFactory.CreateDatabase();
string sqlProcedure = "uspMediaDurationGetModel";
DbCommand dbCommand = db.GetStoredProcCommand(sqlProcedure);
UtilityDL.SetCommandTimeout(dbCommand);
db.AddInParameter(dbCommand, "ModelID", DbType.Int32, modelID);
string[] tables = new string[] { "LaborCategory", "ProcessCategory", "Media", "Activity", "Time", "Model", "ModelTime", "ModelActivity",
"Project", "ProjectAccess", "MetricType", "ProjectMetric", "ProjectMetricData" };//, "Metric", "MetricData"};
// RETRIEVE DATA FROM DB AND LOAD INTO DATASET
mediaDurationDataSet.Clear();
//PrintAllErrs(mediaDurationDataSet);
db.LoadDataSet(dbCommand, mediaDurationDataSet, tables);
//PrintAllErrs(mediaDurationDataSet);
}
"MediaDurationTestDataSet.xml"파일에 잘못된 데이터 정보가있는 것 같습니다. 정확한 정보를 검색하려면 어떻게해야합니까?
최소한 스택 추적을 보여주세요. GetModelDetails 메소드 내의 일부 호출에는 예외가 있습니다. 'catch '구조를 사용하여 숨겨진 곳이기 때문에 던져진 곳을 알 수 없습니다. 현재이 문제를 해결하는 유일한 방법은 더 많은 것을 디버그하는 것입니다. 또한, 단위 테스트가 아니라는 것을 이해하셨습니까? – rufanov
데이터 집합 비주얼 라이저를 사용하여 "mMediaDurationDataSet = new MediaDurationDS();"줄에서 데이터를 볼 때 3 개의 모델 활동 데이터를 볼 수 있지만 "mMediaDurationDataLayer.GetModelDetails (mMediaDurationDataSet, modelID);" 데이터가 비게됩니다. – iop
"GetModelDetails 메서드"를 게시했습니다. – iop