07.01.2020, 17:54 | #1 |
Участник
|
ax2012: Как выполнить unitTest в CIL?
По следам замечания от Макса Белугина
mazzy: Опубликовал проект SysString Предположим, у меня есть класс с unit-тестами. Понятно как запустить этот класс на сервере - установить у класса свойство RunOn=Server Понятно как в ax2012 сделать два unit-тестовых класса, один из которых выполняется на клиенте, а другой на сервере: Создать потомка и, не создавая ни одного метода, указать у потомка свойство RunOn=Server. (в предыдущих аксаптах сложнее - там надо править и свойство, и метод createSuite) Но как в ax2012 выполнить юнит-тесты не просто на сервере, а именно в CIL? |
|
07.01.2020, 18:01 | #2 |
MCT
|
Расширю список вопросов по unit тестам.
Может кто привести пример unit теста, разноски заявки на отгрузку, самого простого?
Вижу только множество синтетических примеров с калькулятором.
__________________
Axapta book for developer |
|
07.01.2020, 18:09 | #3 |
Участник
|
Цитата:
Любой пример с TextBuffer: в CIL он представлен StringBuilder'ом Любой пример с XML не говоря уже об обрезании строк с типом из EDT все это может по разному вести себя в классическом X++ и в CIL. В данном случае хочется проверить поведение TextBuffer |
|
07.01.2020, 18:30 | #4 |
MCT
|
Цитата:
X++: new SalesFormLetter(Parm1,parm2...).run() И соответственно увидеть процент отработанного кода тоже?
__________________
Axapta book for developer |
|
07.01.2020, 18:33 | #5 |
Участник
|
Вот пример для dyn365fo https://docs.microsoft.com/en-us/dyn...written-in-atl
|
|
|
За это сообщение автора поблагодарили: MikeR (2). |
07.01.2020, 18:42 | #6 |
Участник
|
Цитата:
С акс4 вполне получается. И процент покрытого тестами кода тоже. И на клиенте, и на сервере. Я ж даже написал как. Вопрос про CIL. Как unit-тест класс запустить на сервере, причем гарантировано в CIL? |
|
07.01.2020, 18:49 | #7 |
Участник
|
|
|
07.01.2020, 18:54 | #8 |
Участник
|
https://coub.com/view/12fmyh
оно, конечно, да... но можно как-то попроще? |
|
07.01.2020, 23:32 | #9 |
Участник
|
|
|
|
За это сообщение автора поблагодарили: mazzy (2). |
08.01.2020, 00:14 | #10 |
Участник
|
Цитата:
дело в том, что для runAs должен быть метод со специальной сигнатурой - параметром только контейнер. Кроме того, в контейнер далеко не все получится засунуть. что тут же делает тестирование в CIL дико трудозатратным. ============ Если хочется попробовать, то можно взять проект https://github.com/mazzy-ax/SysString задать свойство RunOn=Server для класса StringTest и добавить два метода: в класс String: X++: public server static container trimIdentIL(container pack) { boolean isCLR = xSession::isCLRSession(); str s = conPeek(pack, 1); SysText text = SysText::construct(s); str ret = SysText::trimIdent(text).getText(); return [ret]; } X++: void testTrimIdent_IL() { str s = @' ABC 123 456 '; anytype dummy = new XppILExecutePermission().assert(); container ret = runClassMethodIL(ClassStr(String), staticMethodStr(String, trimIdentIL), [s]); this.assertEquals('ABC\n 123\n456', conPeek(ret, 1)); } я надеялся, что как-нибудь допилили SysTest-классы |
|
08.01.2020, 08:54 | #11 |
MCT
|
Цитата:
Сообщение от belugin
Вот пример для dyn365fo https://docs.microsoft.com/en-us/dyn...written-in-atl
__________________
Axapta book for developer |
|
09.01.2020, 08:52 | #12 |
Участник
|
Это для приемочного тестирования а не для performance. Возможно, кто-то его использует для perfromance - Иван Кашперук, скорее всего знает, об этом больше.
См также пример из его блога |
|
09.01.2020, 09:36 | #13 |
Участник
|
А давайте про ATL в новую ветку?
возвращаясь к unitTest'ам. Цитата:
самый простой unit-test для любой, даже очень сложной функциональности, выглядит так: запустить и убедится, что запущенный функционал не падает хотя бы с тривиальными "пустыми" параметрами. в данной ветке, простейший unit test может еще и создавать environment для выполнения: на клиенте, на сервере без CIL, на сервере с CIL |
|
09.01.2020, 09:53 | #14 |
Участник
|
Цитата:
вопрос, скорее всего, был как при помощи unit тестов убедиться, что такой сложный функционал как "разноска" работает корректно. ответ должен быть ссылками на книги и статьи, где говорится что: 1. юнит-тестирование - не панацея и не серебряная пуля. 2. юнит-тестирование предполагает, что сложный функционал - это композиция используемых методов. 3. юнит тестирование предполагает, что если используемые методы протестированы, то в сложном функционале не обязательно тестировать весь функционал, достаточно протестировать только как работает композиция. (это очень спорный и неоднократно критиковался многими) предполагается, что чем больше используемых методов покрыто тестами, тем больше уверенность, что разноска протестирована. (про возрастание уверенности тоже спорно. но альтернатива - сверхдорогое и ненадежное ручное тестирование) Последний раз редактировалось mazzy; 09.01.2020 в 09:55. |
|
Теги |
cil, unit test |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|