I've been reading a bunch of [blog](http://elegantcode.com/2008/04/26/test-data-builders-refined/) [posts](http://geekswithblogs.net/Podwysocki/archive/2008/01/08/118362.aspx) espousing the virtues of the Test Data Builder Pattern. It seems like a good idea, but all of the posts are years old. 

When C# introduced [Object Initializes](http://msdn.microsoft.com/en-us/library/vstudio/bb384062.aspx), did it make the Test Data Builder pattern obsolete?

Before Object Initializers, you would have needed the following code to initialize a person object:

```
Person p = new Person("John", "Doe", "555-555-1234");

```

At the time, having a builder would have cleaned up the code like this:

```
Person person = new PersonBuilder()
        .WithFirstName("John")
        .WithLastName("Doe")
        .WithPhoneNumber("555-555-1234");

```

Now with object initializers, it can look like this without writing any builder methods:

```
Person p = new Person() {FirstName="John", LastName="Doe", Phone="555-555-1234"};

```

In this simple example, it would seem that the builder pattern is not needed. Am I missing something? Do people still use the builder pattern? If so, what are the benefits?