标签: testcaseattribute

是否有一个等同于NUnit的testcase属性的JUnit?

我已经搜索了JUnit测试用例,它提出了一些看起来实现起来要复杂得多的东西 - 你必须创建一个扩展测试用例然后调用的新类:

public class MathTest extends TestCase {
    protected double fValue1;
    protected double fValue2;

    protected void setUp() {
       fValue1= 2.0;
       fValue2= 3.0;
    }
 }

public void testAdd() {
   double result= fValue1 + fValue2;
   assertTrue(result == 5.0);
}
Run Code Online (Sandbox Code Playgroud)

但我想要的是非常简单的东西,比如NUnit测试用例

[TestCase(1,2)]
[TestCase(3,4)]
public void testAdd(int fValue1, int fValue2)
{
    double result= fValue1 + fValue2;
    assertIsTrue(result == 5.0);
}
Run Code Online (Sandbox Code Playgroud)

有没有办法在JUnit中这样做?

junit nunit unit-testing testcase testcaseattribute

25
推荐指数
5
解决办法
4716
查看次数

NUnit和TestCaseAttribute,参数的交叉连接可能吗?

我有一个测试各种情况的单元测试,如下所示:

public void Test1(Int32 a, Int32 b, Int32 c)
Run Code Online (Sandbox Code Playgroud)

假设我想创建没有循环的测试代码,所以我想使用TestCase来指定这样的参数:

[TestCase(1, 1, 1)]
public void Test1(Int32 a, Int32 b, Int32 c)
Run Code Online (Sandbox Code Playgroud)

我有可能用这个属性这样说:

  • 对于第一个参数,这是一组值
  • 对于第二个参数,这是一组值
  • 对于第三个参数,这是一组值
  • 现在,测试上面的所有组合

IE浏览器.这样的事情:

[TestCase(new[] { 1, 2, 3, 4 }, new[] { 1, 2, 3, 4 }, new[] { 1, 2, 3, 4 })]
public void Test1(Int32 a, Int32 b, Int32 c)
Run Code Online (Sandbox Code Playgroud)

看起来不像,但也许我忽略了什么?

c# nunit testcaseattribute

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

将"TestCase"属性与二维数组一起使用

我正在使用NUnit并尝试为以下方法实现测试:它应该接受两个整数并返回二维数组.所以,我测试的标题看起来像:

[TestCase(5, 1, new int[,]{{1}, {2}, {3}, {4}, {5}})]
public void MyTestMethod(int a, int b, int[][] r)
Run Code Online (Sandbox Code Playgroud)

在编译期间,我遇到以下错误:

错误CS0182:属性参数必须是属性参数类型的常量表达式,typeof表达式或数组创建表达式(CS0182)


我知道可以使用TestCaseSource引用对象数组来完成,例如以下问题的答案:

它提供了如下代码:

private object[][] combination_tests =  new [] {
    new object[] {5, 1, new [,]{{1}, {2}, {3}, {4}, {5}}},
};

[Test]
[TestCaseSource("combination_tests")]
public void MyTestMethod(int a, int b, int[,] r)
Run Code Online (Sandbox Code Playgroud)

但我仍有一个问题:只使用TestCase属性是否可以做到这一点?

c# arrays nunit testcaseattribute

8
推荐指数
2
解决办法
2109
查看次数

NUnit TestCaseSource将值传递给工厂

我正在使用NUnit 2.5.3 TestCaseSource属性并创建工厂来生成我的测试.像这样的东西:

[Test, TestCaseSource(typeof(TestCaseFactories), "VariableString")]
public void Does_Pass_Standard_Description_Tests(string text)
{
    Item obj = new Item();
    obj.Description = text;
}
Run Code Online (Sandbox Code Playgroud)

我的来源是这样的:

public static IEnumerable<TestCaseData> VariableString
{
    get
    {
        yield return new TestCaseData(string.Empty).Throws(typeof(PreconditionException))
            .SetName("Does_Reject_Empty_Text");
        yield return new TestCaseData(null).Throws(typeof(PreconditionException))
            .SetName("Does_Reject_Null_Text");
        yield return new TestCaseData("  ").Throws(typeof(PreconditionException))
            .SetName("Does_Reject_Whitespace_Text");
    }
}
Run Code Online (Sandbox Code Playgroud)

我需要做的是向变量字符串添加最大长度检查,但是这个最大长度是在被测试类中的合同中定义的.在我们的例子中它是一个简单的公共结构

   public struct ItemLengths
    {
        public const int Description = 255;
    }
Run Code Online (Sandbox Code Playgroud)

我找不到任何方法将值传递给测试用例生成器.我尝试过静态共享值,但这些值并没有被提取.我不想将文件保存到文件中,因为每次代码更改时我都需要重新生成此文件.

我想在我的测试用例中添加以下行:

yield return new TestCaseData(new string('A', MAX_LENGTH_HERE + 1))
    .Throws(typeof(PreconditionException));
Run Code Online (Sandbox Code Playgroud)

在概念上相当简单,但我发现无法做到的事情.有什么建议?

nunit testcaseattribute

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

标签 统计

nunit ×4

testcaseattribute ×4

c# ×2

arrays ×1

junit ×1

testcase ×1

unit-testing ×1