Je suis actuellement en train d'augmenter la couverture de code sur nos produits logiciels et j'ai rencontré un problème; tous mes tests unitaires (lorsqu'ils sont compilés avec 'Any CPU') échouent en raison d'une erreur 'BadImageFormatException'.Tous les tests unitaires lançant BadImageFormatException avec Moq?
Cette exception peut être contournée en construisant la solution en utilisant 'x86' au lieu de 'Any CPU', mais les exigences sont telles que nous devons être capables de les exécuter en utilisant n'importe quel bit CPU/x64.
Tous les tests unitaires impliquant Moq suivent à peu près le même format:
[TestMethod]
public void GetProduct_ValidId_ProductReturned()
{
//Setting up the object
Product prod = new Product();
prod.ID = 7;
prod.Name = "Test";
//Create the mocks
var mockProductRepo = new Mock<IRepository<Product>>();
var testDb = new Mock<IUnitOfWork>();
//Setup what the repo needs to return, in this case it's a Product
mockProductRepo.Setup(m => m.getByID(7)).Returns(prod);
//Setup what the database needs to return, in this case it's our repo which we've already setup
testDb.SetupGet(m => m.ProductRepo).Returns(mockProductRepo.Object);
//Run the test
Product returnedProd = ProductHelper.getProduct(testDb.Object, 7);
Assert.IsNotNull(returnedProd);
}
Je peux confirmer que ce test est réussi quand il est construit en utilisant x86. Est-ce que quelqu'un a des idées sur la façon dont je peux faire en sorte que Moq fonctionne bien lorsqu'il est construit avec 'Any CPU'? En outre, je peux également confirmer que tous mes projets dans la solution sont construits en utilisant la même valeur ('Any CPU'). J'utilise Moq v4.0.
EDIT: Voici la pleine exception: Méthode d'essai [ProductName et la méthode appelée] ont jeté exception: System.BadImageFormatException: Impossible de charger le fichier ou l'assembly « [Nom du produit], Version = 1.0.0.0, Culture = neutral , PublicKeyToken = null 'ou l'une de ses dépendances. Une tentative de chargement d'un programme avec un format incorrect a été effectuée.
Etes-vous sûr que c'est Moq qui provoque l'exception? Pouvez-vous poster le texte intégral/callstack de l'exception? –
C'est le coupable probable; tous les autres tests qui ne fonctionnent pas Moq fonctionnent sans problème – Novastorm