C# Xunit-检查方法列表的返回值<;P>;

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

我是Xunit新手,我正在尝试对我创建的解决方案进行简单的Xunit测试,我有以下方法:

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);
}