QUESTION:
I'm trying to figure out if there's a way to fail all C# unit tests whenever a particular condition is met.
BACKGROUND:
I set up a unit test for an object which encodes and decodes its internal data. Here's a fairly contrived example:
[TestClass]
public class FooTests
{
private Foo TestFoo { get; set; }
[TestMethod]
public void DataEncodingIsWorking()
{
// TestFoo.EncodeData() ...
}
[TestMethod]
public void DataDecodingIsWorking()
{
// TestFoo.DecodeData() ...
}
public FooTests(dynamic[] data) {
TestFoo = new Foo(data);
}
}
public class Foo {
public void EncodeData() {
// encodes Foo's data
}
public void DecodeData() {
// decodes Foo's encoded data
}
public Foo(dynamic[] data) {
// feeds data to Foo
}
}
Rather than creating a new instance of TestFoo in every [TestMethod] (somewhat repetitive), I created a global TestFoo object in FooTests. If TestFoo fails to instantiate, I'm looking to fail all FooTests unit tests (as encoding/decoding will not work if the object fails to instantiate).
This isn't really a question of best practices, but I'm also curious as to whether or not this approach is terrible. I suppose another approach would be to set up an additional unit test to see whether or not TestFoo instantiates correctly.