Set Business Hours in Apex Test Code

You don't need to use @SeeAllData=true to be able to access the existing BusinessHours, as this is organization data rather than user data. This isn't that well documented - the concept is covered at :

https://www.salesforce.com/us/developer/docs/apexcode/Content/apex_testing_data_access.htm

but BusinessHours isn't in the list.

To confirm this I've created a simple test class in one of my dev orgs that has a bunch of accounts and a single BusinessHours record:

@IsTest
private class BHTest {
    static void TestBH()
    {
        List<BusinessHours> bhs=[select id from BusinessHours where IsDefault=true];
        System.assert(bhs.size()==1);
        List<Account> accs=[select id from Account];
        System.assert(accs.size()==0);
    }
}

Executing this test confirms that I can see the BusinessHours records, but I can't see any accounts as they are isolated from my test.

Unfortunately you still have to rely on the BusinessHours record being present in the Salesforce instance your tests are running in.