Let's take this unit test. Unit testing guidelines state that I should only have 1 assert per test, unless I'm testing the state of an object. In this case, Muxer.Muxe is a wrapper around FFMPEG that generates the right command line and executes it. Having the function return "Success" really tells me nothing about whether the FFMPEG commandline was correctly generated for a variety of scenarios, which is what requires more testing. (For example an extra tag needs to be added for AAC files).
So, based on unit testing correct practices, should I include the last part of the test, which tests the internal work being done within the method, or not?
[Theory]
[InlineData("video.mkv", "audio.aac", "dest.mp4")]
[InlineData("video.MKV", "audio.AAC", "Dest.MKV")]
[InlineData("video", "audio", "dest")]
public void Muxe_AudioVideo_Success(string videoFile, string audioFile, string destination) {
var Muxer = SetupMuxer();
var Result = Muxer.Muxe(videoFile, audioFile, destination);
Assert.Equal(CompletionStatus.Success, Result);
Assert.Single(factory.Instances);
IProcessManagerFFmpeg Manager = factory.Instances.FirstOrDefault() as IProcessManagerFFmpeg;
Assert.NotNull(Manager);
output.WriteLine(Manager.CommandWithArgs);
Assert.Contains(audioFile, Manager.CommandWithArgs);
Assert.Contains(videoFile, Manager.CommandWithArgs);
}