Показать сообщение отдельно
Старый 08.05.2019, 07:02   #2  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,158 / 1286 (47) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Не пробовал раньше проверять TableMap, стало интересно, вот что сейчас получилось в результате быстрого простого эксперимента. Естественно, никакого теста не выполняется, только для проверки покрытия.
Эксперимент на TableMap 'AddressMap', код класса тестирования:
X++:
void new()
{
    ;

    super();

    elementName = 'AddressMap';
    elementType = UtilElementType::TableMap;
}
X++:
public void testAddressFormatId()
{
    ;

    AddressMap::addressFormatId('RU');
    this.assertEquals(1, 1, 'Бамс!!!');
}
X++:
public void testModifiedField()
{
    Address     address;
    AddressMap  addressMap;
    ;

    addressMap  = address;

    select firstOnly addressMap;

    addressMap.modifiedField(fieldNum(Common, RecId));
    this.assertEquals(1, 1, 'Бамс!!!');
}
По статическому методу addressFormatId покрытие есть, а методу экземпляра modifiedField - нет.
Начал разбираться, в SysCodeCoverage увидел подмену пути из ..Map в ..Table в методах checkTreeNode и modifyTreenode. Закомментировал эту подмену, результат стал точно противоположным:
По статическому методу addressFormatId покрытия нет, а методу экземпляра modifiedField - есть.
Пока понятно (видно в отладчике), что в SysCodeCoverage в переменной pathMap по TableMap для статических методов приходит путь Data Dictionary\Tables, а для методов экземпляра путь Data Dictionary\Maps.
Почему так, пока не разбирался.
За это сообщение автора поблагодарили: mazzy (2).