我想学习如何使用Nunit测试。我有这个简单的代码:
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Enter two numbers\n");
int number1;
int number2;
number1 = int.Parse(Console.ReadLine());
number2 = int.Parse(Console.ReadLine());
MathsHelper helper = new MathsHelper();
int x = helper.Add(number1, number2);
Console.WriteLine("\nThe sum of " + number1 +
" and " + number2 + " is " + x);
Console.ReadKey();
int y = helper.Subtract(number1, number2);
Console.WriteLine("\nThe difference between " +
number1 + " and" + number2 + " is " + y);
Console.ReadKey();
}
}
public class MathsHelper
{
public MathsHelper() { }
public int Add(int a, int b)
{
int x = a + b;
return x;
}
public int Subtract(int a, int b)
{
int x = a - b;
return x;
}
我还创建了一个单元测试:
[TestFixture]
public class TestClass
{
[TestCase]
public void AddTest()
{
MathsHelper helper = new MathsHelper();
int result = helper.Add(20, 10);
Assert.AreEqual(30, result);
}
[TestCase]
public void SubtractTest()
{
MathsHelper helper = new MathsHelper();
int result = helper.Subtract(20, 10);
Assert.AreEqual(10, result);
}
}
}
我从Nuget Nunit.runner,Nunit.concole和Nunit.adapter下载。但是,如果我运行所有测试,它表示我的项目中没有任何测试。也许你可以帮助我?
答案 0 :(得分:0)
尝试更改测试下的默认过程架构>测试设置>默认的Proccessor架构和重建解决方案。
答案 1 :(得分:0)
您正在使用[TestCase]
属性将该方法标记为测试。这适用于参数化测试。您的测试没有参数化,这就是它无法正常工作的原因。
[Test]
属性。请参考TestAttribute
doc:
Test属性是将TestFixture类中的方法标记为测试的一种方法。它通常用于简单(非参数化)测试...
尝试以下方法:
...
[Test]
public void AddTest()
{
MathsHelper helper = new MathsHelper();
int result = helper.Add(20, 10);
Assert.AreEqual(30, result);
}
...
这应该有效。