title: Using multiple Fact or single Theory
body: <p>I'm currently writing some unit tests in xUnit. Till now, I was using MSTest for UT, so every testcase was single test in file. With xUnit, I can use parametrized tests. What I'm not sure in using them, what is more common or I shoud use more. </p>
  
  <p>My method I'm testing is simple - it takes decimal number and converts it to string with certain attributes. Test have always same code, it differs just in input and output. Example below is simplified version, but I think it still expresses the point.</p>
  
  <pre><code>[Fact]
  public void valueIsZero()
  {
      var formattedValue = Formatter.Format(0m);
  
      Assert.Equal("0", formattedValue);
  }
  
  [Fact]
  public void valueIsOne()
  {
      var formattedValue = Formatter.Format(1m);
  
      Assert.Equal("1", formattedValue);
  }
  </code></pre>
  
  <p>This is the way I would write tests in MSTest, but in xUnit I can write those tests with theory like this:</p>
  
  <pre><code>public static IEnumerable&lt;object[]&gt; Data =&gt;
      new List&lt;object[]&gt;
      {
          new object[] { 0m, "0" },
          new object[] { 1m, "1" }
      };
  
  [Theory]
  [MemberData(nameof(Data))]
  public void multipleValue(decimal value, string expectedResult)
  {
      var formattedValue = Formatter.Format(value, true, false, true);
  
      Assert.Equal(expectedResult, formattedValue);
  }
  </code></pre>
  
  <p>Are there any benefits or disadvantages with first or second approach? Or which approach is more common?</p>