Parfois, dans Salesforce tests vous avez besoin pour créer des objets Utilisateur pour exécuter une partie de l'essai, comme un speciifc type d'utilisateur.
Toutefois, puisque la force de vente de l'Été 08 mise à jour, les tentatives de créer à la fois des objets Utilisateur et les objets normaux (tels que des Comptes) dans le même fil de test de l'erreur suivante:
MIXED_DML_OPERATION, opération DML sur la configuration de l'objet n'est pas permis après avoir mis à jour une non-installation de l'objet (ou vice versa): l'Utilisateur, l'objet d'origine: Compte
Notez que l'erreur ne se produit pas lorsque vous exécutez les tests à partir d'Eclipse/Force.com IDE, mais il ne se passe lorsque vous déployez pour Salesforce, puis exécutez les tests à partir de l'intérieur de Salesforce.
Comment puis-je reprendre mes tests pour éviter cette erreur?
Voici un exemple simple d'un test qui provoque l'erreur:
static testMethod void test_mixed_dmlbug() {
Profile p = [select id from profile where name='(some profile)'];
UserRole r = [Select id from userrole where name='(some role)'];
User u = new User(alias = 'standt', email='standarduser@testorg.com',
emailencodingkey='UTF-8', lastname='Testing',
languagelocalekey='en_US',
localesidkey='en_US', profileid = p.Id, userroleid = r.Id,
timezonesidkey='America/Los_Angeles',
username='standarduser@testorg.com');
Account a = new Account(Firstname='Terry', Lastname='Testperson');
insert a;
System.runAs(u) {
a.PersonEmail = 'test@madeupaddress.com';
update a;
}
}