Is a unit test which uses LINQ to check multiple values acceptable?
What you need is passing parameters to common test method and supplying it with informative error message.

    [TestMethod]
    public void SubmitShortText()
    {
        var colorCodes = new[] { "#", "#f", "#ff" };
        DoAssertion(colorCodes);
    }

    private void DoAssertion(string[] colorCodes)
    {
        var parser = new ColorParser();
        foreach (var code in colorCodes)
        {
            var hasValue = parser.Parse(code).HasValue;
            Assert.IsTrue(hasValue, string.Format("Failed to parse color code '{0}'.", code));
        }
    }


Parametrized tests are also supported in XUnit:

    [Theory]
    [InlineData("#")]
    [InlineData("#f")]
    [InlineData("#ff")]
    public void SubmitShortText(string code)
    {
        var parser = new ColorParser();
        var hasValue = parser.Parse(code).HasValue;
        Assert.True(hasValue, string.Format("Failed to parse color code '{0}'.", code));
    }


Tests will be executed one by one. Execution will be stopped on the first failed test.