相关疑难解决方法(0)

在xUnit.net中测试参数化类似于NUnit

在xUnit.net框架中是否有类似于NUnit的以下功能?

[Test, TestCaseSource("CurrencySamples")]
public void Format_Currency(decimal value, string expected){}

static object[][] CurrencySamples = new object[][]
{
    new object[]{ 0m, "0,00"},
    new object[]{ 0.0004m, "0,00"},
    new object[]{ 5m, "5,00"},
    new object[]{ 5.1m, "5,10"},
    new object[]{ 5.12m, "5,12"},
    new object[]{ 5.1234m, "5,12"},
    new object[]{ 5.1250m, "5,13"}, // round
    new object[]{ 5.1299m, "5,13"}, // round
}
Run Code Online (Sandbox Code Playgroud)

这将在NUnit GUI中生成8个单独的测试

[TestCase((string)null, Result = "1")]
[TestCase("", Result = "1")]
[TestCase(" ", Result = "1")]
[TestCase("1", Result = "2")]
[TestCase(" 1 ", Result = "2")]
public string …
Run Code Online (Sandbox Code Playgroud)

.net c# nunit unit-testing xunit.net

94
推荐指数
6
解决办法
4万
查看次数

在F#中,如何将集合传递给xUnit的InlineData属性

我想要将列表,数组和/或seq用作xUnit的InlineData的参数.

在C#中,我可以这样做:

using Xunit; //2.1.0

namespace CsTests
{
    public class Tests
    {
        [Theory]
        [InlineData(new[] {1, 2})]
        public void GivenCollectionItMustPassItToTest(int[] coll)
        {
            Assert.Equal(coll, coll);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在F#我有这个:

namespace XunitTests

module Tests =
  open Xunit //2.1.0

  [<Theory>]
  [<InlineData(8)>]
  [<InlineData(42)>]
  let ``given a value it must give it to the test`` (value : int) =
    Assert.Equal(value, value)

  [<Theory>]
  [<InlineData([1; 2])>]
  let ``given a list it should be able to pass it to the test``
  (coll : int list) =
    Assert.Equal<int list>(coll, coll) …
Run Code Online (Sandbox Code Playgroud)

.net tdd f# xunit

8
推荐指数
4
解决办法
1849
查看次数

XUnit InlineData与对象?

最近,我们一直在一个新项目中尝试单元测试,现在我们想使用来将一个对象传递给我们的测试方法[InlineData],因此我们可以对多个不同的数据输入多次使用同一测试方法。

[ClassData]并且[MemberData]据我了解,也可以提供,但似乎没有提供解决方案。

基本上,有一种方法可以通过XUnit传递对象,如下所示:

[Theory]
[InlineData(new Object { Attribute = 1 })]
public void Test(Object obj) 
{
    // Assert
    Xunit.Assert.NotNull(obj.Attribute);
}
Run Code Online (Sandbox Code Playgroud)

还是这不是正确的约定或用法?

传递intstring的使用效果很好[InlineData]

c# asp.net-mvc unit-testing xunit.net

7
推荐指数
0
解决办法
3554
查看次数

如何为数据理论提供 List&lt;int&gt; ?“内联数据”

如何提供 List 作为数据理论的数据源,我在 InlineData 中找不到任何支持此内容的内容:

    [InlineData(null, new[] { 42, 2112 }, null)] // This doesn't work, I need something that works with List<int>
    [Trait("Category", "API")]
    [Trait("Category", "Partner")]
    [Trait("Category", "Smoke")]
    public void VerifyGetCarListAsync(int? colorID, List<int> carIDs, int? sellerID){//}
Run Code Online (Sandbox Code Playgroud)

c# xunit xunit.net

6
推荐指数
1
解决办法
5363
查看次数

将对象作为测试参数

我试图编写一个测试,检查派生类中的方法是否未被错误覆盖.所以我尝试了以下内容.但无论我尝试什么,它似乎都不允许我"注入"我的对象.

[Theory]
[xxxData(new BaseClass())]
[xxxData(new DerivedClass())]
public void Test_Stuff(BaseClass obj)
{
    // ...
}
Run Code Online (Sandbox Code Playgroud)

xunit xunit.net

1
推荐指数
1
解决办法
4238
查看次数

是否可以将内联 C# 对象添加到 xUnit 中的理论中?

我有一些自定义 C# 对象,我想将它们作为InlineData参数传递到 xUnit 的Theory.

我尝试了这个问题的答案,但没有成功,因为我的对象不是字符串,因此不能创建为编译时常量(属性参数必须是属性参数类型的常量表达式、typeof 表达式或数组创建表达式)。

这是我尝试过的,

private static readonly Card sevenOfHearts = Card.SevenOfHearts;
private static readonly Card sevenOfSpades = Card.SevenOfSpades;
private static readonly Card sevenOfDiamonds = Card.SevenOfDiamonds;
private static readonly Card sevenOfClubs = Card.SevenOfClubs;

[Theory]
[InlineData(sevenOfHearts)]
[InlineData(sevenOfSpades)]
[InlineData(sevenOfDiamonds)]
[InlineData(sevenOfClubs)]
void Test(
  Card card)
{
  //...
}
Run Code Online (Sandbox Code Playgroud)

但我收到抱怨说这些对象不是编译时常量

有什么替代方案吗?

c# unit-testing xunit

1
推荐指数
1
解决办法
3106
查看次数

标签 统计

c# ×4

xunit ×4

xunit.net ×4

unit-testing ×3

.net ×2

asp.net-mvc ×1

f# ×1

nunit ×1

tdd ×1