C # - модульное тестирование Factory Design Pattern - PullRequest
0 голосов
/ 16 октября 2018

Я работаю над проектом и должен тестировать шаблон Factory Design в 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()
    {

    }
}

Этоde class 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; }
    }
}

Это класс de Space:

 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>();

Это класс AbstractFactory:

    public abstract class AbstractFactory
{
    //Creating Object
    public abstract Space createspace(AddItemsInProps item);
}

Ответы [ 2 ]

0 голосов
/ 16 октября 2018

Есть несколько вещей, которые вы можете проверить, например, тип объекта, возвращаемого фабрикой, а также, если объект эквивалентен ожидаемому объекту.

Пример - проверка эквивалентности:

[TestClass]
public class CinemaFactoryTests
{
    [TestMethod]
    public void GivenItemProps_WhenCreatingSpace_ShouldReturnExpectedSpace()
    {
        // arrange
        var factory = new CinemaFactory();

        var props = new AddItemsInProps
        {
            AreaType = "my area",
            Position = "my position",
            Dimension = "my dimension"
        };

        // act
        Space cinema = factory.createspace(props);

        // assert
        var expectedCinema = new Cinema(props.AreaType, props.Position, props.Dimension);
        cinema.Should().BeEquivalentTo(expectedCinema);
    }
}

В этом случае я проверяю, эквивалентен ли объект, возвращенный фабрикой, ожидаемому.

PS: я использую FluentAssertions , чтобы проверить,объекты эквивалентны.

0 голосов
/ 16 октября 2018

Создайте экземпляр тестируемого субъекта и предоставьте необходимые зависимости.

[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);
        //...
    }
}

Запустите тестируемый метод и затем проверьте ожидаемое поведение с фактическим поведением

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...