Edit2: Approach 2
Seperate Test methods that tests concerns separately: public void DosSomething_Passing15_Returns12Test(){
//add code for arrange
int expectedvalue=12;
string expectedVariable1="I am expected";
string expectedVariable3=15.9;
string actualVariable1, actualVariable3;
var sut=new Foo();
int actualValue=sut.DoSomething(15, out actualVariable1, out actualVariable3);
Assert.IsTrue(actualValue, expectedvalue);
}
public void DosSomething_Passing15_ReturnsExpectedVariable1Test(){
//add code for arrange
int expectedvalue=12;
string expectedVariable1="I am expected";
string expectedVariable3=15.9;
string actualVariable1, actualVariable3;
var sut=new Foo();
int actualValue=sut.DoSomething(15, out actualVariable1, out actualVariable3);
Assert.IsTrue(actualVariable1, expectedVariable1);
}
public void DosSomething_Passing15_ReturnsExpectedVariable2Test(){
//add code for arrange
int expectedvalue=12;
string expectedVariable1="I am expected";
string expectedVariable3=15.9;
string actualVariable1, actualVariable3;
var sut=new Foo();
int actualValue=sut.DoSomething(15, out actualVariable1, out actualVariable3);
Assert.IsTrue(actualVariable3, expectedVariable3);
}
Isn't approach 2 adhering to "Tests should not test more than one concern"?