Another solution would be to use a template method and run all tests using this method. For example:
// template method
void Execute(Action test)
{
    try
    {
        test();
    }
    catch (Exception e)
    {
        // handle exception here
        throw;
    }
}
[Test]
public void Test()
{
    Execute(() =>
        {
            // your test here
        });
}
This pattern is particularly useful when your test uses some resources that must be initialized before test and disposed after test (e.g. temporary file). In that case, you can use a type parameter in test delegate.
Another advantage is that you can easily let the test run on different thread, using different culture etc.
Disadvantage is clear: it forces you to use lambda method in every test.