Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# NUnit和TestCaseSource在VS2019中发现额外的非源测试_C#_.net Core_Nunit - Fatal编程技术网

C# NUnit和TestCaseSource在VS2019中发现额外的非源测试

C# NUnit和TestCaseSource在VS2019中发现额外的非源测试,c#,.net-core,nunit,C#,.net Core,Nunit,我在VS2019中使用了一个NUnit测试,它使用.Net Core 3.1和一个TestCaseSource,提供了一个3元组列表 它按预期工作,我希望测试的案例被发现并运行 但是,测试资源管理器显示的测试方法与无源测试相同。结果是跳过“测试”,组的结果显示为不确定。以下是代码和测试资源管理器映像: public static IEnumerable<(int, int, int)[]> TestInput { get

我在VS2019中使用了一个NUnit测试,它使用.Net Core 3.1和一个TestCaseSource,提供了一个3元组列表

它按预期工作,我希望测试的案例被发现并运行

但是,测试资源管理器显示的测试方法与无源测试相同。结果是跳过“测试”,组的结果显示为不确定。以下是代码和测试资源管理器映像:

public static IEnumerable<(int, int, int)[]> TestInput
        {
            get
            {
                yield return new[] { 
                    (0, 2, 3), 
                    (0, 1, 7), 
...


[Test]
[TestCaseSource(nameof(TestInput))]
public void CalcTotalTime_Given_known_valid_input_Then_returns_expected_result((int,int,int)[] input)
{
...
公共静态IEnumerable测试输入
{
得到
{
返回新[]{
(0, 2, 3), 
(0, 1, 7), 
...
[测试]
[TestCaseSource(名称(TestInput))]
public void CalcTotalTime给定已知有效输入然后返回预期结果((int,int,int)[]输入)
{
...

由于这只是一个学习项目,测试中的代码在测试项目中,因此只有一个项目,它的目标是.NETCore3.1

已安装的NuGet软件包包括:

  • Microsoft.NET.Test.Sdk v16.7.1
  • NUnit v3.12.0
  • NUnit3TestAdapter v3.17.0

我能够复制它,对我来说,使用NUnit3TestAdapter似乎是一个bug。 过去也发现了类似的问题:

根据你想要达到的目标,你可以考虑编写你的单元测试:
[TestCase(0,2,3)]
[TestCase(1,2,3)]
public void CalcTotalTime_Given_known_valid_input_Then_returns_expected_result(int a, int b, int c)
    {
    }

但是正如注释中提到的,行为与原始代码不同。

您是否希望每个测试用例处理(1)三个整数?(2)一个元组?(3)整个元组数组?您的代码就是这样编写的(3)我希望它能起作用,但我不清楚你到底想做什么。是的,#3。输入是一个边数组,有开始节点、结束节点和边长度。它们组合起来形成一个图。我希望整个图作为测试的输入。试着产生显式类型…
产生返回新的(int,int,int)[]…
我确实尝试过,但没有成功。我甚至将3元组封装在一个TestData类中,并返回了该类的一个实例,结果是相同的。很可能您发现了一个bug。:-)这与原始代码有所不同……测试需要3个整数。如果用户真的想这样做,那也可以,但这不是一个问题似乎是这样。你是正确的,这是不一样的。测试输入需要一个3元组的列表,其中每个元组表示一个具有两个节点和一个长度的图上的边。