Take a look at these guides that define testing @future methods:
- https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_invoking_future_methods.htm
- https://developer.salesforce.com/forums/?id=906F00000008wjuIAA
Essentially what you are going to want to do is to test the scheduled job's main methods, and then on a different test (or the same one but that would be a bit cluttered) you'd test the @future method.
If your @future method is contained within the execute method, I would suggest separating them so that you can call the @future method from another class.
Remember that @future makes a method run asynchronously in the background and on it's own thread, so testing it in its own test method will not hurt. If your @future method is the method that is making callouts, make sure you read up on how to mock callouts in tests.
global class ExampleSchedulable implements Schedulable {
global void execute(SchedulableContext SC){
executeFuture();
}
@future
global String executeFuture(){
return null;
}
}
and then
@isTest
...
static testMethod void testFuture(){
Test.startTest();
class.executeFuture();
Test.stopTest();
}
This might be an irrelevant answer, however, because it is difficult to determine your problem without seeing any code.