Sometimes the weirdest things come up when testing. I was helping with some

Integration Testing recently, and we needed to submit a new valid postal address with

every request to this system. That’s a hefty load to bear, and certainly if

I were doing Unit Testing I’d be mocking away that system just to not have to deal

with that problem, but for Integration Tests there was no way around it. My

answer? Public data my good friends.

The quest started with Google, as most do, and a search criteria like this :

City State Zip filetype:csv

Which after browsing for several pages I modified to:

City State Zip filetype:csv site:usps.com

That resulted in the CSV which is the source of the data we’re using, a list of Post

Offices across the nation. The list is very long, a total of 19,931 addresses.

Now, it wouldn’t be fair to just list the Google queries here, after all this is a

technical blog. I took the CSV apart, removed the irrelevant fields and parsed

it into an object to hold address data, specifically this object.

[Serializable]

              public

              class AddressData
{

              private

              string _Name;

              public

              string Name
    {
        get { return _Name;

}
        set
        {
            _Name = value;
        }
    }

              private

              string _StreetLine1;

              public

              string StreetLine1
    {
        get { return _StreetLine1;

}
        set
        {
            _StreetLine1 = value;
        }
    }

              private

              string _StreetLine2;

              public

              string StreetLine2
    {
        get { return _StreetLine2;

}
        set
        {
            _StreetLine2 = value;
        }
    }

              private

              string _City;

              public

              string City
    {
        get { return _City;

}
        set
        {
            _City = value;
        }
    }

              private

              string _State;

              public

              string State
    {
        get { return _State;

}
        set
        {
            _State = value;
        }
    }

              private

              string _Zip;

              public

              string Zip
    {
        get { return _Zip;

}
        set
        {
            _Zip = value;
        }
    }
}

Now if you compile your own version of that code, and create a List<AddressData>

you should be able to Deserialize

this file of all the addresses for your own use.