Запланированный пакетный процесс в Salesforce

Я пытаюсь реализовать пакетный процесс. Мне нужна помощь / руководство о том, как проверить это. Все, что я здесь делаю, — это отображаю имя возможности в журналах отладки. Но когда я запускаю класс ScheduleBatchable, в котором также есть тестовый класс при выполнении теста Apex. Операторы отладки в Opp_BatchProcess не отображаются. Что я делаю неправильно?

Вот код, который у меня есть

global class Opp_BatchProcess implements Database.Batchable < sObject >
{
    globalDatabase.QueryLocator start(Database.BatchableContextBC)
    {
        system.debug('Insidestart');
        returnDatabase.getQueryLocator('select name,id from opportunity');
    }

    global void execute(Database.BatchableContext BC, List <sObject> batch)
    {
        for (Sobject s : batch)
        {
            opportunity o = (opportunity)s;
            system.debug('Opp name is' + o.name);
        }
    }

    global void finish(Database.BatchableContext BC) {}
}

У меня также есть запланированный класс

global class scheduledBatchable implements Schedulable
{
    global void execute(SchedulableContext sc)
    {
        Opp_BatchProcess b = new Opp_BatchProcess();
        ID myBatchJobID = database.executebatch(b);
    }

    public static testMethod void testscheduleMerge()
    {
        Test.startTest();
        scheduledBatchable s8 = new scheduledBatchable();
        string sch = '0 0 * * 1-12 ? *';
        system.schedule('Process Trans 1', sch, s8);
        Test.stopTest();
    }
}

person Prady    schedule 09.04.2012    source источник


Ответы (1)


Похоже, ваш метод тестирования проверяет только класс Scheduled. Вам также необходимо протестировать класс Batchable.

Попробуй это:

global class scheduledBatchable implements Schedulable
{
    global void execute(SchedulableContext sc)
    {
        Opp_BatchProcess b = new Opp_BatchProcess();
        ID myBatchJobID = database.executebatch(b);
    }

    public static testMethod void testscheduleMerge()
    {
        Test.startTest();
        scheduledBatchable s8 = new scheduledBatchable();
        string sch = '0 0 * * 1-12 ? *';
        system.schedule('Process Trans 1', sch, s8);
        Test.stopTest();
    }

    public static testMethod void testBatchMerge()
    {
        Test.startTest();
        Opp_BatchProcess b = new Opp_BatchProcess();
        ID myBatchJobID = database.executebatch(b);
        Test.stopTest();
    }
}
person Matt K    schedule 09.04.2012
comment
Спасибо, Мэтью, я подумал, что, поскольку запланированный класс вызывает Opp_BatchProcess, он должен охватывать и это. - person Prady; 10.04.2012
comment
Обычно думают, что это так, но выполнение запланированного класса на самом деле не запускает пакетный класс в методах тестирования. - person Matt K; 10.04.2012