J OpenDock
J OpenDock

Reputation: 59

Testing validations C#

Below I've pasted my code. I'm validating a measure. I've written code that will read a Linux file. But if I wanted to pass multiple file names here would this be possible? so for example instead of my test just validating one file could I do a loop so it could ready multiple files in one go.

Once the file is being read and proceeded I return actualItemData. In my next method, I want to make a call to this actualItemData so the data is published in my var actual

   public string validateMeasurement
    {
        var processFilePath = **"/orabin/app/oracle/inputs/ff/ff/actuals/xx_ss_x.csv.ovr";**
        var actualItemData = Common.LinuxCommandExecutor.
            RunLinuxcommand("cat " + processFilePath);

        **return actualItemData;** 
    }

    public void validateInventoryMeasurementValue(string Data, string itemStatus)
    {

        var expected = '6677,6677_6677,3001,6';

        **var actual = actualItemData);**


        Assert.AreEqual(expected, actual);
    }

Upvotes: 0

Views: 210

Answers (1)

Andrew
Andrew

Reputation: 5277

It looks like you are using msunit. As far as I know it doesn't support test cases. If you were to use nunit you would be able to do this using the TestCase attribute.

[TestCase("myfile1.txt", "6677,6677_6677,3001,6")]
[TestCase("myfile2.txt", "1,2,3")]
public void mytest(string path, string expected) 
{
    var actual = Common.LinuxCommandExecutor.
        RunLinuxcommand("cat " + path);

    Assert.AreEqual(expected, actual);
}

Generally you don't want to write unit tests that cross code boundaries (read files, hit the database, etc) as these tests tend to be brittle and difficult to maintain. I am not sure of the aim of your code but it appears you may be trying to parse the data to check it's validity. If this is the case you could write a series of tests to ensure that when your production code (parser) is given a string input, you get an output that matches your expectation. e.g.

[Test()]
public void Parse_GivenValidDataFromXX_S_X_CSV_ShouldReturnTrue(string filename) 
{
  // Arrange
  var parser = CreateParser(); // factory function that returns your parser
  // Act
  var result = parser.Parse("6677,6677_6677,3001,6");
  // Arrage
  Assert.IsTrue(result);
}

Upvotes: 5

Related Questions