public void MultiAssemblyGetTraitsAcceptanceTest() { string code1 = @" using System; using Xunit; public class MockTestClass { [Fact] [Trait(""Trait1"", ""Value1"")] public void Value1Test() { } [Fact] [Trait(""Trait1"", ""Value2"")] public void Value2Test() { } [Fact] [Trait(""Trait2"", ""Value1"")] public void Trait2Value1Test() { } } "; string code2 = @" using System; using Xunit; public class MockTestClass { [Fact] [Trait(""Trait1"", ""Value1"")] public void OtherTest1() { } [Fact] [Trait(""Trait3"", ""Value42"")] public void Crazy() { } } "; using (MockAssembly mockAssembly1 = new MockAssembly()) using (MockAssembly mockAssembly2 = new MockAssembly()) { mockAssembly1.Compile(code1); mockAssembly2.Compile(code2); MultiAssemblyTestEnvironment mate = new MultiAssemblyTestEnvironment(); mate.Load(mockAssembly1.FileName); mate.Load(mockAssembly2.FileName); MultiValueDictionary<string, string> result = mate.EnumerateTraits(); var trait1 = result["Trait1"]; Assert.Equal(2, trait1.Count()); Assert.Contains("Value1", trait1); Assert.Contains("Value2", trait1); var trait2 = result["Trait2"]; Assert.Single(trait2); Assert.Contains("Value1", trait2); var trait3 = result["Trait3"]; Assert.Single(trait3); Assert.Contains("Value42", trait3); } }