Тестирование NUnit завершилось неудачно, хотя есть аргументы - PullRequest
1 голос
/ 18 апреля 2020

Я пытаюсь выполнить тест, чтобы убедиться, что представление возвращает правильную строку. Я очень новичок в тестировании NUnit и изучил несколько учебных пособий, но я не уверен, что я делаю неправильно.

using System;

namespace ItemTracker
{

public enum Category{Book,StorageDevice,Stationary};

class Item{

    private string _id;
    private double _price;
    private Category _category;

    public Item(string id, double price, Category category){

        _id=id;
        _price=price;
        _category=category;

    }

    public string ID{

            get{return _id;}
            set{_id=value;}
    }
    public double Price{

            get{return _price;}
            set{_price=value;}
    }

    public Category Category{

            get{return _category;}
            set{_category=value;}
    }

    public string View(){

            if(_category==Category.Book){

                    return "Get ready for the adventure!";

            }

            else if(_category==Category.StorageDevice){

                    return "Data storing in progress";

            }

            else if(_category==Category.Stationary){

                    return "Learn something new with me!";

            }

            else{
                    return "Invalid";
            }

    }


    }


}

Это мой TestClass.cs и то, что я уже пробовал, поместить значения вывода, которые я хочу, в массив:

using NUnit.Framework;
using System;

namespace ItemTracker
{
[TestFixture()]
class testclass{
    [Test()]
    public void Testing(Item[] j){

        j[0]=new Item("B1001",39.90,Category.Book);
        foreach(Item x in j){

            Assert.AreEqual("Get ready for the adventure!",x.View());
        }
    }


}

}

Однако я получаю сообщение об ошибке:

  Error Message:
   No arguments were provided

Ответы [ 2 ]

1 голос
/ 18 апреля 2020

Вам следует создать массив внутри метода test, иначе ваш тест будет считаться параметризованным (но вы не указали никаких атрибутов для параметров, таких как TestCase или TestCaseSource)

[Test]
public void Testing()
{
    var j = new Item[1];
    j[0] = new Item("B1001",39.90,Category.Book);
    foreach(Item x in j)
    {
        Assert.AreEqual("Get ready for the adventure!",x.View());
    }
}
1 голос
/ 18 апреля 2020

Убедитесь, что ваш класс Item равен public, я вижу, что текущий уровень доступа равен internal (по умолчанию, когда вы не предоставляете доступ).

Кроме этого, вы просто нужно знать, что, к сожалению, параметры не поддерживаются в MSTest . Другой вариант - использовать Тесты на основе данных . Кроме того, вы можете проверить этот ответ.

В качестве текущего решения для вашего случая, пожалуйста, создайте массив внутри вашего метода, а не предоставляйте его в качестве параметра.

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