Можно ли использовать PEX с C?

Я новичок в PEX, Visual Studio и мире .NET, тем не менее я
сгенерировал несколько тестов для C #. Я прочитал, что PEX также может анализировать
Программы .NET написаны на любом языке .NET, поэтому на данный момент я
пытаясь заставить PEX работать с C (я сохранил код на C ++
проект. Это правильный подход?). Поскольку нет Visual Studio
Надстройка PEX для C ++, я пытался использовать интерфейс командной строки.
В учебном пособии «Параметризованное модульное тестирование с Microsoft Pex» это
говорит, что у меня должна быть «сборка .NET», заканчивающаяся на .dll или .exe
который содержит класс, аннотированный с помощью PexClassAttribute и public
метод аннотирован с помощью PexMethodAttribute. Так как только учебник
предоставляет пример для C #, я попытался запустить PEX на .exe без
любая аннотация. Поэтому я скомпилировал свой код в Visual Studio, получил мой
ассемблер light.exe и попытался запустить PEX на нем. Я получил следующее
ошибка:

Microsoft Pex v0.94.51006.1 -- http://research.microsoft.com/pex --
v4.0.30319
Copyright (c) Microsoft Corporation 2007-2010. All rights reserved.

unexpected error: error while loading of 'light' (currently running
with 4 bytes/pointer).
LAUNCHER FAILED
unexpected failure: error while loading assembly (-1006 - 0xfffffc12)

Итак, у меня есть следующие вопросы:

  1. Можно ли использовать PEX с C? Или я должен преобразовать свой код в
    C #?
  2. Похоже, мой light.exe не является «сборкой .NET». Как я
    создать «сборку .NET» из кода C?
  3. Я получаю сообщение об ошибке, потому что моя сборка имеет неправильный формат или
    потому что я не комментировал код? (второе мне кажется маловероятным, потому что
    сообщения об ошибке. Я бы ожидал что-то вроде «нет исследований
    найдено после применения всех фильтров; Вы забыли [PexClass] или
    Атрибут [PexMethod]? «).
  4. Если ошибка не связана с отсутствующей аннотацией или неправильным форматом
    сборка, то, что является основной причиной?
  5. Как я могу аннотировать класс с PexClassAttribute в C ++?
    Какие библиотеки мне нужны и как происходит процесс создания
    монтажные работы?

2

Решение

Pex работает только на .NET сборках. Это Можно использоваться с любым языком .NET, но C не является таковым, и даже если бы это было так, он все равно работал бы только на чистом коде C, написанном для целевой CLR, а не на любом собственном коде C (который у вас есть).

Так что не поможет, что вы загрузили свой код C как проект C ++, так как даже код C ++ не может быть проанализирован Pex, если он не нацелен на CLR.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]