【问题标题】:c# create program using function to generate multiplication table using [Class Library] and test the function with different scenarios [NUnit]c# create program using function to generate multiplication table using [Class Library]并在不同场景下测试函数[NUnit]
【发布时间】:2015-12-10 02:35:41
【问题描述】:

您好,我需要一些帮助来创建一个简单的程序,该程序将使用 VS C# 中的类库生成乘法表(使用 for 循环)。

我在下面有 for 循环的不完整代码,但我迷路了,因为它与申请表和控制台应用程序有点不同。如果您使用的类库无法使用调试,您可以使用测试资源管理器/测试来运行或检查代码。

(编辑更新 1)为此需要两件事。

  • 类库(主程序)
  • 相同的解决方案,但另一个类名,现在它带有引用主程序的 NUnit。

(编辑更新 2)

我会回来查看一些信息

更新 3。这是新代码

namespace FunctionTest
{
    [TestFixture]
    public class Class1
    {
        [Test]
        public void Multiplication()

        {
            int i;
            int n = 0;
            n = Convert.ToInt32(Console.ReadLine());

            for (i = 1; i < 13; i++)
            {
                Console.WriteLine(i + "x" + n + " = " + i * n);
            }
        }
    }

这是想法或它应该是什么样子。 (下面是程序)

using System;
namespace ExerciseFunction
{
    public class Equations
    {
        public int addition(int x, int y)
        {
            int z = x + y;
            return z;
        }
  
        public int subtraction(int x, int y)
        {
            int z = x - y;
            return z;
        }

        public int multiplication(int x, int y)
        {
            int z = x * y;
            return z;
        }

        public int division(int x, int y)
        {
            int z = x / y;
            return z;
        }


        static void Main(string[] args)
        {

        }
    }
}

现在这个是 NUnit,用于检查程序的输入或答案是否正确。

using NUnit.Framework;
using ExerciseFunction;

namespace ExerciseNunit
{
    [TestFixture]
    public class Operations
    {


        [Test]
        public static void addition()
        {
            Equations result = new Equations ();
            float r = result.addition(4, 5);
            Assert.AreEqual(9, r);
            Assert.AreNotEqual(13, r);
        }

        [Test]
        public static void subraction()
        {
            Equations result = new Equations();
            int t = result.subtraction(5, 3);
            Assert.AreEqual(2, t);
            Assert.AreNotEqual(5, t);
        }

        [Test]
        public static void multiplication()
        {
            Equations result = new Equations();
            int y = result.multiplication(6, 3);
            Assert.AreEqual(18, y);
            Assert.AreNotEqual(15, y);
        }

        [Test]
        public static void division()
        {
            Equations result = new Equations();
            int u = result.division(4, 2);
            Assert.AreEqual(2, u);
        }

    }
}

感谢并期待听到您的回复。感谢您的帮助!

【问题讨论】:

  • 你还有什么问题? ...我不跟随。它应该怎么做? ... 类库作为主程序?
  • 那么为什么要进行测试呢? ... 为什么是类库?您想要一个可以编写表格的应用程序,还是您的作业是弄清楚测试是如何工作的? :-)
  • 嗨。谢谢回复。我想生成一个像这样的乘法表 5x1 = 5, 5x2 = 10, 5x3= 15, 5x4= 20 等等。是的,作为主程序的类库,我将在同一个解决方案中创建另一个类并使用主程序的参考。就像相互连接一样。我已经发布了一个示例以使其更加清晰。

标签: c# class for-loop nunit class-library


【解决方案1】:

如果你想编写一个程序,你可能也想执行它。所以你需要可执行文件,而不是库。

所以首先创建一个新项目“控制台应用程序”或“Windows 窗体应用程序”,或者可能是“WPF 应用程序”但不是类库。编写一些单元测试也很有用,但在这种情况下我不关心。

其次:不要在循环前声明循环变量i。这样做这样的循环中

for (int i = 0; i < 15; ++i) //or i++ there is a difference but not relevant right now.

那么...您可能希望从用户那里获得一些输入以获取您的n。 在控制台应用程序中,您可以这样做

int n;
string input = Console.ReadLine();
if (int.TryParse(input, out n))
{
    //do your math here.
}
else
{
    Console.WriteLine("That was not a number.");
}

您的for-cycle 可以工作,但输出的格式会很差,最重要的是,您没有在任何地方打印或提供输出。所以让我们像这样修复它(把它放在“//在这里做你的数学。”):

for (int i = 1; i < 15; ++i)
{
    Console.WriteLine(string.Format("{0} x {1} = {2}", i, n, i * n));
}

最后,您可能希望应用程序不要立即退出。如果最后加上Console.ReadLine();。它会在退出之前等待按下任意键。

如果您非常想在另一个项目中包含代数部分(这实际上没有意义,但可以),您可以创建另一个项目(类库),其中包含此类(或仅将类放入现有项目):

public static class Algebra
{
    public static int Multiply(int a, int b)
    {
        return a * b;
    }

    //.... other methods
}

然后像这样在for循环中调用它:

int product = Algebra.Multiply(i, n);
Console.WriteLine(string.Format("{0} x {1} = {2}", i, n, product));

当然,您可以根据需要对Multiply 方法进行单元测试。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-27
    • 2022-12-19
    • 2022-12-02
    • 2022-12-26
    • 1970-01-01
    • 2012-05-04
    相关资源
    最近更新 更多