AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX Blogs
NAV
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 23.06.2016, 18:11   #1  
Blog bot is offline
Blog bot
Участник
 
25,459 / 846 (79) +++++++
Регистрация: 28.10.2006
jaestevan: Test Unitarios de código X++ en Visual Studio (AX 2012)
Источник: http://www.jaestevan.com/test-unitar...studio-ax-2012
==============

Creo que todo el que lo haya intentado estará de acuerdo en que el framework para Unit Testing integrado en el propio entorno de desarrollo de Microsoft Dynamics AX 2012 (del nuevo Dynamics AX, AX 7, hablaremos otro día) es bastante limitado. Tan limitado que resulta prácticamente inutilizable en cuanto quieres probar algo más o menos serio.

Pero hoy no quiero hablar de limitaciones sino de lo que podemos hacer, y entre estas cosas está la posibilidad de utilizar classes proxy del código X++ para poder escribir las pruebas unitarias en el propio Visual Studio, y utilizar así sus posibilidades y su flexibilidad. Veamos un ejemplo sencillo.

Voy a intentar probar una clase que he hecho en X++ específicamente para esto, con este código:



///
/// Dummy fluid class for testing purposes
///
class DEVDummyTestCalcClass
{
real value;
}
public void new(real _value)
{
value = _value;
}
public real Value()
{
return value;
}
public DEVDummyTestCalcClass Add(real _value)
{
return new DEVDummyTestCalcClass(value + _value);
}
public DEVDummyTestCalcClass Substract(real _value)
{
return new DEVDummyTestCalcClass(value - _value);
}
public DEVDummyTestCalcClass Multiply(real _value)
{
return new DEVDummyTestCalcClass(value * _value);
}
public DEVDummyTestCalcClass Divide(real _value)
{
return new DEVDummyTestCalcClass(value / _value);
}

En el Visual Studio 2010 que todos tenemos en nuestros entornos de desarrollo de Microsoft Dynamics AX 2012, creamos un nuevo proyecto de tipo Test Project (yo he elegido C# pero supongo que también funcionarán en Visual Basic):



Añadimos este proyecto al AOT. Esto es necesario para que se añada al proyecto la referencia al ensamblado que nos va a permitir el Interop entre X++ y CIL que necesitamos para que se generen las clases proxy:



Si no lo tenemos visible, mostramos el Application Explorer para poder acceder a los objetos del AOT desde Visual Studio:



Elegimos la clase (o clases) que queremos probar, y las añadimos al proyecto, lo que efectivamente generará la clase proxy automáticamente:



Ahora, en la clase de pruebas creada por defecto en el proyecto, o en otra clase cualquiera que hayamos creado, sustituimos el método TestMethod1 por métodos de pruebas como estos (aplicables a la clase X++ que puse más arriba):

[TestMethod]
public void TestConstruct()
{
using (Session axSession = new Session())
{
axSession.Logon(null, null, null, null);

Assert.AreEqual(0, new DEVDummyTestCalcClass(0).Value());
Assert.AreEqual(-1, new DEVDummyTestCalcClass(-1).Value());
}
}

[TestMethod]
public void TestSum()
{
using (Session axSession = new Session())
{
axSession.Logon(null, null, null, null);

Assert.AreEqual(10, new DEVDummyTestCalcClass(0).Add(10).Value());
Assert.AreEqual(10, new DEVDummyTestCalcClass(0).Add(5).Add(5).Value());
}
}

[TestMethod]
public void TestDivide()
{
using (Session axSession = new Session())
{
axSession.Logon(null, null, null, null);

Assert.AreEqual(10, new DEVDummyTestCalcClass(20).Divide(2).Value());
}
}

[TestMethod]
[ExpectedException(typeof(Microsoft.Dynamics.AX.ManagedInterop.NumericException))]
public void TestDivideByZeroException()
{
using (Session axSession = new Session())
{
axSession.Logon(null, null, null, null);

new DEVDummyTestCalcClass(100).Divide(0).Value(); // Exception
}
}

A continuación ya podemos ejecutar estos Test y verificar que nuestra clase funciona como se espera de ella:



Fácil, ¿Verdad? Si este tema interesa a más gente seguiré publicando artículos para escenarios más complicados. Digamos, más cerca de lo que serían unas pruebas de objetos reales. Mientras tanto, probablemente te interese mi serie de artículos sobre gestión del ciclo de vida de aplicaciones AX 2012.



Источник: http://www.jaestevan.com/test-unitar...studio-ax-2012
__________________
Расскажите о новых и интересных блогах по Microsoft Dynamics, напишите личное сообщение администратору.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
emeadaxsupport: AX Performance Troubleshooting Checklist Part 1B [Application and AOS Configuration] Blog bot DAX Blogs 0 05.09.2014 21:11
atinkerersnotebook: Walkthrough & Tutorial Summary Blog bot DAX Blogs 1 09.09.2013 09:11
emeadaxsupport: Final Microsoft Dynamics AX 2012 R2 Content Available! Blog bot DAX Blogs 0 04.12.2012 06:12
mbsturk: Missing AX EP web project in Visual Studio 2008 Blog bot DAX Blogs 0 24.02.2011 15:11
emeadaxsupport: Debugging Microsoft Dynamics AX 2009 SSRS reports with Microsoft Visual Studio 2008 Blog bot DAX Blogs 0 26.07.2009 15:07
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 10:10.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.