我正在使用microsoft.visualstudio.testtools 10.0和EntityFramework 6.0,
这是版本的问题吗?请帮忙。
主要方法:
public static bool validateAlreadyEnroll(int sectionid, int personid, ref string extramessage, ref validationResult vr)
{
int n = (from e in db.Enrollments where e.SectionID == sectionid && e.EnrolledPersonID == personid select e).ToList().Count();
if(n == 0){
return false;
}
var statusid2 = db.Database.SqlQuery<resultStatusID>("select top 1 EnrollmentStatusID from Enrollment where SectionID = " + sectionid + " and EnrolledPersonID = " + personid + " order by EnrollmentID desc").ToList();
if (statusid2[0].EnrollmentStatusID == CANCELREQUEST) {
return false;
}
return true;
}
单元测试:
[TestMethod]
[DataSource("DataSource3")]
[DeploymentItem("Regi.Service.Tests\\tests.xlsx")]
public void testAlreadyEnroll()
{
int n;
int sectionid;
if (Int32.TryParse(TestContext.DataRow["sectionid"].ToString(), out n))
{
sectionid = Int32.Parse(TestContext.DataRow["sectionid"].ToString());
}
else
{
sectionid = 0;
}
int personid;
if (Int32.TryParse(TestContext.DataRow["personid"].ToString(), out n))
{
personid = Int32.Parse(TestContext.DataRow["personid"].ToString());
}
else
{
personid = 0;
}
bool answer = Helper.validateAlreadyEnroll(sectionid, personid, ref msg, ref vr);
bool result = Convert.ToBoolean(TestContext.DataRow["result"].ToString());
Assert.AreEqual(answer, result, "Failure");
}
答案 0 :(得分:0)
查看错误代码,我认为您的项目或数据库配置错误。也许添加对程序集的引用。
此外,如果您想要正确地进行测试驱动开发,那么您应该拥有更小的测试用例。例如,只检查db.Enrollments.Count()&gt; 0表示您的数据源。 这将很快找出问题。
//旧的,不正确的建议: 但我认为Linq声明不知道'&amp;&amp;'作为逻辑操作数。请改用“和”。
答案 1 :(得分:0)
最后!
我需要的DbContext构造函数:var ensureDLLIsCopied = System.Data.Entity.SqlServer.SqlProviderServices.Instance;而且“名称”没有被正确引用,我也比较旧的版本和this.Configuration.LazyLoadingEnabled = false;失踪,为了更好地解释我发现这篇文章:Buildserver can not find Entity Framework Sql Provider