我正在尝试对一个简单的工厂进行单元测试,但它一直告诉我我正在尝试使用类似的方法。发生了什么事?
我的单元测试:
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();
}
}
}
答案 0 :(得分:1)
您正在尝试创建一个正在调用和的方法的实例,然后调用它正在调用的方法。而是创建工厂,然后拨打CreateInventory
。
var factory = new Home.Services.Factory();
var inventory = factory.CreateInventory();
select
和get
作为变量名称,因为它们在其他地方使用时是关键字。答案 1 :(得分:1)
CreateInventory()
是Factory
类的方法。
你正试图new
它 - 这是不可能的。
var get = new Home.Services.Factory();
var inventory = get.CreateInventory();
答案 2 :(得分:1)
你可以像你想要的那样在一行中完成。你刚刚在课程名称后面遗漏了()。变化:
new InventoryType.InventorySelect();
到
new InventoryType().InventorySelect();