在单元测试中如何传递哈希表的输入

发布于 2024-07-16 17:47:19 字数 639 浏览 5 评论 0原文

   public DataSet ExampleMethod(int param1, string param2, Hashtable ht)
   {

    if(ht==null)
    {
        ht = new Hashtable();
    }
    ht.Add("testKey","testData");


    DataSet ds = new DataSet();
    ds.Tables.Add();
    ds.Tables[0].Columns.Add("Column1");
    ds.Tables[0].Columns.Add("Column2");
    ds.Tables[0].Columns.Add("Column3");
    return ds ;


    } 

这只是一个示例方法,因为我有一个字符串、一个整数和一个哈希表类型作为输入,我可以为整数和字符串传递随机值,但我将为哈希表类型传递什么类型的值以便进行单元测试这个方法。 我还想要此方法的示例 Nunit Fixture 代码,以便我可以在 Nunit 框架中测试它。因为我的方法返回一个数据集,所以我如何为其编写文本固定装置,因为我使用 AREequals。(5,add(2,3 )) 如果它返回一个 int 。那么当一个方法返回一个 Dataset 时该怎么做

   public DataSet ExampleMethod(int param1, string param2, Hashtable ht)
   {

    if(ht==null)
    {
        ht = new Hashtable();
    }
    ht.Add("testKey","testData");


    DataSet ds = new DataSet();
    ds.Tables.Add();
    ds.Tables[0].Columns.Add("Column1");
    ds.Tables[0].Columns.Add("Column2");
    ds.Tables[0].Columns.Add("Column3");
    return ds ;


    } 

this is just a example method now since i have a string ,a int and a hash table type as a input ,i can pass random values for int and string but what type of value will i pass for hash table type in order to unit test this method . and i also want a sample Nunit Fixture code for this method so that i can test it in Nunit framework .since my method returns a dataset how do i write a text fixture for it because i use AREequals.(5,add(2,3)) if it returns a int .so what to do for a method when it returns a Dataset

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

陌上青苔 2024-07-23 17:47:19

您可以使用虚拟数据在 TestMethod 或 TestFixture 中创建哈希表并传递该对象。 我对你的理解正确吗?

在 [SetUp] 方法中,您使用虚拟数据填充哈希表。

Hashtable ht = new Hashtable();

[SetUp]
public void SetUp()
{
   ht.Add( "key1", "value1" );
   ht.Add( "key2", "value2" );
   ht.Add( "key3", "value3" );
}

我可以看到你真正的问题是关于返回的数据集的断言。
您仍然可以使用 Assert.AreEqual,但要测试 DataSet 是否包含您期望给定 HashTable 的单元格数据。

Assert.AreEqual( ht["key1"], ds.Tables[0].Rows[0][0].ToString() );
Assert.AreEqual( ht["key1"], ds.Tables[0].Rows[0][1].ToString() );

您可以为此使用循环。

您的测试方法可能如下所示。

[Test]
public void Should_Do_Stuff()
{
    MyClass myObject = new MyClass();

    DataSet ds = myObject.ExampleMethod( 1, "string", ht );

    Assert.AreEqual( ds.Tables[0].Rows.Count, ht.Count );
    Assert.AreEqual( ht["key1"], ds.Tables[0].Rows[0][0].ToString() );
    Assert.AreEqual( ht["key1"], ds.Tables[0].Rows[0][1].ToString() );
}

希望能回答你的问题。

You can create a HashTable in the TestMethod or the TestFixture with dummy data and pass that object. Am I understanding you right?

In the [SetUp] method you populate your HashTable with dummy data.

Hashtable ht = new Hashtable();

[SetUp]
public void SetUp()
{
   ht.Add( "key1", "value1" );
   ht.Add( "key2", "value2" );
   ht.Add( "key3", "value3" );
}

I can see you real question is about the Assert of the returned DataSet.
You can still use Assert.AreEqual, but instead test that the DataSet contain the cell data you'd expect given the HashTable.

Assert.AreEqual( ht["key1"], ds.Tables[0].Rows[0][0].ToString() );
Assert.AreEqual( ht["key1"], ds.Tables[0].Rows[0][1].ToString() );

You could use a loop for this.

Your TestMethod could look like this.

[Test]
public void Should_Do_Stuff()
{
    MyClass myObject = new MyClass();

    DataSet ds = myObject.ExampleMethod( 1, "string", ht );

    Assert.AreEqual( ds.Tables[0].Rows.Count, ht.Count );
    Assert.AreEqual( ht["key1"], ds.Tables[0].Rows[0][0].ToString() );
    Assert.AreEqual( ht["key1"], ds.Tables[0].Rows[0][1].ToString() );
}

Hope that answered you question.

殤城〤 2024-07-23 17:47:19

传递 null 或使用静态数据创建新的哈希表并将其传递给此函数。 为了检查数据集,您可以断言返回的数据集计数、是否为空以及如果需要的话也可以断言值。

Pass on null or create new hashtable with static data and pass it to this function. For checking dataset you can assert on returned dataset count, is null or not and also values if you want.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文