C# Xunit-检查方法列表的返回值<;P>;
我是Xunit新手,我正在尝试对我创建的解决方案进行简单的Xunit测试,我有以下方法:C# Xunit-检查方法列表的返回值<;P>;,c#,.net,entity-framework,unit-testing,xunit,C#,.net,Entity Framework,Unit Testing,Xunit,我是Xunit新手,我正在尝试对我创建的解决方案进行简单的Xunit测试,我有以下方法: public List<Countries> GetCountriesValues() { List<Countries> countries = new List<Countries>(); using (var context = new CountriesDBEntities()) { if (context != null
public List<Countries> GetCountriesValues()
{
List<Countries> countries = new List<Countries>();
using (var context = new CountriesDBEntities())
{
if (context != null &&
context.Countries != null &&
context.Countries.Count() > 0)
{
foreach (Countries c in context.Countries)
{
countries.Add(c);
}
}
}
return countries;
}
如其他注释中所述,如果不满足任何条件,则返回的是空列表,而不是空列表 因此,您可以使用Assert.NotEmpty将测试更改为检查空集合,而不是空集合
[Fact()]
public void GetCountriesValues_TestCountriesReturn()
{
var actual = mcTest.GetCountriesValues();
Xunit.Assert.NotEmpty(actual);
}
对于XUnit,您不应该使用Fact而不是TestMethod吗?您所说的“不通过”是什么意思?这个断言成功了吗?或者你有什么例外吗?@user1781290是的,你说的绝对正确,我忘了fact@nvoigt是的,我在尝试实时单元测试,但忽略了异常。我忘记在我的测试项目中包含Entity.Framework,因此解决方案失败了。谢谢。删除
if
语句,context
将永远不会是null
,因为您刚刚创建了它<如果遵循所有返回集合的方法都不会返回null,而是返回空集合的约定,则code>Countries
永远不应为null
.Count>0
是多余的,因为如果集合为空,foreach
将什么也不做。
[Fact()]
public void GetCountriesValues_TestCountriesReturn()
{
var actual = mcTest.GetCountriesValues();
Xunit.Assert.NotEmpty(actual);
}