Как объединить файл с путем к папке в NUnit C # - PullRequest
0 голосов
/ 30 мая 2018

Я написал тест, используя NUnit Testcase.Я определил имя файла «irm_xxx_tbbmf_xu.csv.ovr» и какие данные я ожидаю, что этот файл будет выводиться.

Я определил переменную processFilePath, содержащую местоположение, где будет находиться этот файл, и имя файла в параметре атрибута NUnit TestCase.

Мой вопрос - как ямы написали processFilePath как я могу написать это так, чтобы он нашел имя файла из [NUnit.Framework.TestCase], как я ожидаю.Поскольку в настоящее время это не объединяет два.И будет ли Assert.AreEqual работать так, как я это написал.

[NUnit.Framework.TestCase("irm_xxx_tbbmf_xu.csv.ovr", "6677,6677_6677,3001,6")]
[NUnit.Framework.TestCase("irm_xxx_tbbmf_xxx.csv.ovr", "6677,22,344")]
public void ValidateInventoryMeasurement(string path, string expected)
{
    var processFilePath = "/orabin/product//inputs//actuals/";
    var actual = Common.LinuxCommandExecutor.
        RunLinuxcommand("cat " + path);

    Assert.AreEqual(expected, actual);
}

1 Ответ

0 голосов
/ 30 мая 2018

Согласно моему комментарию, вы фактически не используете путь при поиске файла, который хотите сравнить в тесте.Есть несколько способов объединить пути к файлам - рекомендация @ juharr по использованию Path.Combine является наилучшей практикой (особенно в Windows), но вы можете действительно использовать любую технику для конкатенации строк - я использовал интерполяцию строк, чтобы сделать это ниже.

using System; // Other usings 
using NUnit.Framework;

namespace MyTests
{
....


[TestCase("irm_xxx_tbbmf_xu.csv.ovr", "6677,6677_6677,3001,6")]
[TestCase("irm_xxx_tbbmf_xxx.csv.ovr", "6677,22,344")]
public void ValidateInventoryMeasurement(string path, string expected)
{
    const string processFilePath = "/orabin/product/inputs/actuals/";
    var actual = Common.LinuxCommandExecutor
                       .RunLinuxcommand($"cat {processFilePath}{path}");

    Assert.AreEqual(expected, actual);
}

Примечания

  • Я предполагаю, что тестируемая система имеет значение Common.LinuxCommandExecutor
  • Путь processFilePathконстанта и может быть превращена в const string
  • Я убрал двойную косую черту //
  • Вы можете добавить использование NUnit.Framework в верхней частиваш файл NUnit .cs, и тогда вам не нужно будет повторять полное пространство имен NUnit.Framework.TestCase, то есть просто [TestCase(..)]
  • . Возможно, вам придется следить за посторонними пробелами на выходе cat.В этом случае вы можете рассмотреть:

  Assert.AreEqual(expected, actual.Trim());
...