0

我正在尝试对一个简单的工厂进行单元测试,但它一直告诉我我正在尝试使用像类型这样的方法。这是怎么回事?

我的单元测试:

using System;
using System.Text;
using System.Collections.Generic;
using System.Linq;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Home;

namespace HomeTest
{
    [TestClass]
    public class TestFactory
    {
        [TestMethod]
        public void DoTestFactory()
        {
            InventoryType.InventorySelect select = new InventoryType.InventorySelect();
            select.inventoryTypes.Add("cds");

            Home.Services.Factory.CreateInventory get = new Home.Services.Factory.CreateInventory();
            get.InventoryImpl();

            if (select.Validate() == true)
                Console.WriteLine("Test Passed");
            else
                if (select.Validate() == false)
                    Console.WriteLine("Test Returned False");
                else
                    Console.WriteLine("Test Failed To Run");

            Console.ReadLine();

        }
    }
}

我的工厂:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Home.Services
{
    public class Factory
    {
        public InventorySvc CreateInventory()
        {
            return new InventoryImpl();
        }

    }
}
4

3 回答 3

1

您正在尝试创建您正在调用的方法的实例,然后调用它正在调用的方法。相反,创建您的工厂,然后调用CreateInventory.

var factory = new Home.Services.Factory();
var inventory = factory.CreateInventory();
  • 我倾向于避免使用selectget作为变量名,因为它们在其他地方使用时是关键字。
于 2012-09-24T15:36:35.763 回答
1

CreateInventory()Factory类上的一个方法。

你正在努力做到new这一点——这是不可能的。

var get = new Home.Services.Factory();
var inventory = get.CreateInventory();
于 2012-09-24T15:36:49.433 回答
1

您可以像您尝试做的那样在一行中完成它。您只是在班级名称后缺少 () 。改变:

new InventoryType.InventorySelect();

new InventoryType().InventorySelect();
于 2014-07-07T12:45:11.530 回答