Модульное тестирование, если текст == ноль - PullRequest
0 голосов
/ 08 февраля 2019

Я делаю некоторые модульные тесты с модульным тестированием Microsoft

У меня есть этот кусок кода:

public void AddComment(Case c, string text)
        {
            if (text == null)
            {
                return;
            }

            var comment = UnitOfWork.GetRepository<CaseComment>().Create();

            comment.Case = c;
            comment.Account = _userInfoProvider.UserName;
            comment.DateUtc = DateTimeHelper.UtcNow();
            comment.Text = text;

            UnitOfWork.GetRepository<CaseComment>().Insert(comment);
        }

И у меня есть модульный тест для этого куска cdoe:

 if (text == null)
            {
                return;
            }

I модульный тест выглядит так:

 [TestMethod]
        public void BaseProcess_Should_AddCommentIfNull()
        {
            string text = null;

            var result = string.IsNullOrEmpty(text);

            Assert.AreEqual(text, null);

        }

Показывает зеленый цвет.Но покрытие кода все еще желтое, а не синее.

Спасибо

Теперь оно у меня так:

 [TestMethod]
        public void BaseProcess_Should_AddCommentIfNull()
        {
            string comment = "Comment";
            var newInstance = new Case
            {

                Reference = comment,                
                DateSubmitted = DateTime.Now,                      
                Status = CaseStatus.Submitted,
            };          

            string text = null;

            var result = string.IsNullOrEmpty(text);
            Action act = () => CorrectionRequestCaseProcess.AddComment(newInstance, comment);

            Assert.AreEqual(text, null);

        }

Но если я сделаю это так:

 [TestMethod]
        public void BaseProcess_Should_AddCommentIfNull()
        {
            string comment = "";
            var newInstance = new Case
            {

                Reference = comment,                
                DateSubmitted = DateTime.Now,                      
                Status = CaseStatus.Submitted,
            };          

            string text = null;

            var result = string.IsNullOrEmpty(text);
            Action act = () => CorrectionRequestCaseProcess.AddComment(newInstance, text);

            Assert.AreEqual(text, null);

        }

Ничего не изменилось enter code here

И я написал другой модульный тест, подобный этому:

[TestMethod]
public void BaseProcess_should_equalToNull()
{
    string comment = "Comment";
    var newInstance = new Case
    {

        Reference = comment,
        DateSubmitted = DateTime.Now,
        Status = CaseStatus.Submitted,
    };

    var newComment = new CaseComment();
    newComment.Case = newInstance;
    newComment.Account = _userInfoProvider.UserName;
    newComment.DateUtc = DateTimeHelper.UtcNow();
    newComment.Text = comment;

    var comment2 = _testUnitOfWork.GetRepository<CaseComment>().Create();
    _testUnitOfWork.GetRepository<CaseComment>().Insert(newComment);
}

1 Ответ

0 голосов
/ 08 февраля 2019

Вы должны добавить дополнительный тестовый пример, чтобы текстовая переменная отличалась от нуля, и убедиться, что репозиторий вызван.После этого охват функции будет% 100.

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