c# - C# - 单元测试工厂设计模式
问题描述
我正在做一个项目,我必须在 C# 中对工厂设计模式进行单元测试。目前我被卡住了,我不知道我也要做些什么。有人可以帮我吗?我想对这段代码进行单元测试:
public class CinemaFactory : AbstractFactory //inheritance of AbstractFactory
{
public override Space createspace(AddItemsInProps item)
{
//returns new Cinema
return new Cinema(item.AreaType, item.Position, item.Dimension);
}
}
我还做了一个单元测试项目并创建了这个:
[TestClass]
public class UnitTest1
{
[TestMethod]
public void TestMethod1()
{
//Arrange
Game1.Design_Patterns.CinemaFactory cinemaFactory = new Game1.Design_Patterns.CinemaFactory();
//Act
//Assert
}
}
电影:
public class Cinema : Space //inheritance of Space class
{
//Named arguments free you from the need to remember or to look up the order of parameters in the parameter lists of called methods.
public Cinema(string areaType, string position, string dimension) : base(areaType, position, dimension)
{
//The sprite of the Cinema
this.Img = "cinema";
}
public void StartMovie()
{
}
}
这是类 AddItemsInProps:
public class AddItemsInProps
{
//Get: The get { } implementation must include a return statement. It can access any member on the class.
//Set: The set { } implementation receives the implicit argument "value." This is the value to which the property is assigned.
public string Classification { get; set; }
public string AreaType { get; set; }
public string Position { get; set; }
public string Dimension { get; set; }
public int Capacity { get; set; }
public int ID { get; set; }
}
}
这是类空间:
public abstract class Space
{
public string AreaType { get; set; }
public Point Position { get; set; }
public Point Dimension { get; set; }
public int ID { get; set; }
public string Img { get; set; }
public int Afstand { get; set; }
public Space Vorige { get; set; }
public Dictionary<Space, int> Neighbours = new Dictionary<Space, int>();
这是抽象工厂类:
public abstract class AbstractFactory
{
//Creating Object
public abstract Space createspace(AddItemsInProps item);
}
解决方案
创建被测主题的实例并提供必要的依赖项。
[TestClass]
public class CinemaFactorTests {
[TestMethod]
public void CinemaFactory_Should_Create_Cinema() {
//Arrange
var cinemaFactory = new Game1.Design_Patterns.CinemaFactory();
var item = new AddItemsInProps {
//set necessary properties here
AreaType = "value here",
Position = "value here",
Dimension = "value here"
};
//Act
var actual = cinemaFactory.createspace(item);
//Assert
Assert.IsNotNull(actual);
Assert.IsInstanceOfType(actual, typeof(Cinema));
//...you can also compare property values from item and actual for equality
Assert.AreEqual(item.AreaType, actual.AreaType);
//...
}
}
调用被测方法,然后用实际行为验证预期行为
推荐阅读
- java - 如何将 Hibernate 6 与 Quarkus 一起使用
- vue.js - 如何使用 VeeValidate v3 Vue2 和 Vuex 正确验证表单?接收误报
- powershell - Powershell - Update-MgUserLicenseDetail:不支持针对此资源的过滤搜索
- visual-studio - Visual Studio 2019 项目工作目录设置未存储在 GitHub 存储库中
- ios - 无法部署 Xamarin Froms iOS App 它只是在物理设备上不断中断
- reactjs - MenuItem 中的 TextField 导致 nextFocus.getAttribute 不是函数
- kubernetes - Kubernetes Service 没有在 Pod 之间平均分配流量
- visual-studio-code - VSCode 有没有办法在文件资源管理器中隐藏项目的标题?
- variables - ColdFusion 变量的奇怪行为
- java - 为什么需要 LinkedList 的 toArray(T[] a) 方法中的变量“结果”?