Application Test Toolset for Dynamics NAV 2009 SP1

AdministratorAdministrator Member, Moderator, Administrator Posts: 2,500
edited 2012-07-09 in Download section
Application Test Toolset for Dynamics NAV 2009 SP1
The new Test Features released with Microsoft Dynamics NAV 2009 SP1 enables efficient test development for C/AL code. This should ensure C/AL developers can strive for engineering improvements around test development.

The application test toolset builds on top of these features and should help you getting started with the test development process. The package includes tools for test case management and execution and a set of test development tools like Assert and restoring database state. Beside from the tools a few sample tests are included as inspiration to get started.

http://www.mibuso.com/dlinfo.asp?FileID=1154

Discuss this download here.

Comments

  • BeliasBelias Member Posts: 2,998
    What a wonderful documentation!!! :^o :| :? :shock: [-(
    Anyway, I'm gonna try it this afternoon...i just took a look at the release note...
    NO date NO time NO version list in the object set... :?
    -Mirko-
    "Never memorize what you can easily find in a book".....Or Mibuso
    My Blog
  • BeliasBelias Member Posts: 2,998
    I'm testing the tester :mrgreen:
    I'll add here my observation:
    1. Whitepaper has not been released yet, so it's my fault about blaming on documentation :whistle:
    2. Come oooon!!!! Codeunit 130020, function RunTests(): you'll find this code!
    (Do NEVER use Findfirst with repeat)
    IF FINDFIRST THEN
        REPEAT
          IF "Line Type" = "Line Type"::Codeunit THEN BEGIN
            MinLineNo := "Line No.";
            MaxLineNo := GetMaxCodeunitLineNo;
            IF TestMgt.ISPUBLISHMODE THEN
              DeleteChildren;
    
            CODEUNIT.RUN("Test Codeunit");
          END;
        UNTIL NEXT = 0;
    
    3. How does codeunit 132000 works? :-k
    -Mirko-
    "Never memorize what you can easily find in a book".....Or Mibuso
    My Blog
  • AdministratorAdministrator Member, Moderator, Administrator Posts: 2,500
    Application Test Toolset for Dynamics NAV 2009 SP1
    The new Test Features released with Microsoft Dynamics NAV 2009 SP1 enables efficient test development for C/AL code. This should ensure C/AL developers can strive for engineering improvements around test development.

    The application test toolset builds on top of these features and should help you getting started with the test development process. The package includes tools for test case management and execution and a set of test development tools like Assert and restoring database state. Beside from the tools a few sample tests are included as inspiration to get started.

    Update 26/07/2010:
    This supplement includes a simple test framework, a set of (example) tests, and a tool to manage and execute tests. The provided tests cover a wide range of Dynamics NAV application areas. The framework includes generic test functionality (e.g., assertions, database restore/backup) as well as application-specific functionality (e.g., factory functions). The test management tool, test framework and tests build on top of the testability features released with Microsoft Dynamics™ NAV 2009 SP1.

    Important:
    Please only execute the tests provided in this supplement in a test environment. Running tests will create, delete, and modify records in the database. The included tests have only been run on the W1 version of Microsoft Dynamics NAV 2009 SP1 and the versions for the following countries/regions: DE, DK, and NA.

    http://www.mibuso.com/dlinfo.asp?FileID=1154

    Discuss this download here.
  • AndwianAndwian Member Posts: 627
    Belias wrote:
    I'm testing the tester :mrgreen:
    I'll add here my observation:
    1. Whitepaper has not been released yet, so it's my fault about blaming on documentation :whistle:
    2. Come oooon!!!! Codeunit 130020, function RunTests(): you'll find this code!
    (Do NEVER use Findfirst with repeat)
    IF FINDFIRST THEN
        REPEAT
          IF "Line Type" = "Line Type"::Codeunit THEN BEGIN
            MinLineNo := "Line No.";
            MaxLineNo := GetMaxCodeunitLineNo;
            IF TestMgt.ISPUBLISHMODE THEN
              DeleteChildren;
    
            CODEUNIT.RUN("Test Codeunit");
          END;
        UNTIL NEXT = 0;
    
    3. How does codeunit 132000 works? :-k

    Hi Belias,

    I have read the Kriki's How-to about record. I also read that we should not use the FINDFIRST with REPEAT UNTIL, but why? Because I have tried a scenario, using FINDFIRST and REPEAT UNTIL, and it seems work well, i.e. the code inside the loop will read correctly.

    Please advice
    Regards,
    Andwian
  • lyotlyot Member Posts: 202
    Let's suppose you want to loop the Item table that contains 3000 records.

    Looping this with FINDFIRST will result in about 3000 server calls to fetch every item record at a time.

    Looping this with FINDSET will result in about 6 server calls that fetches 500 (or 501?) records at a time.

    500 is dependant from the following property in NAV:
    File > Database > Alter > Advanced > Caching: Recordset

    So the number off server calls by a findset is dependant of the number of record in the (filtered) recordset divided by the cached recordset property.

    In short, FINDSET is way more performant.
  • krikikriki Member, Moderator Posts: 9,115
    Correct, but there is still a small catch with FINDSET.

    If you set of records is bigger than that 500, the first 500 records are read WITHOUT creating a cursor, so it is very fast.
    BUT after that, a cursor needs to be created to read the rest of the records. And after creating the cursor, it has to be positioned on the last record in the FINDSET you just received. This positioning can be very expensive because it can require a lot of reads.
    SO :
    if you are sure that your recordset is bigger than that 500, you best use the classic FIND('-'). You need a cursor anyway, so this way you avoid the cost of positioning the cursor on the last record in the SET.
    Regards,Alain Krikilion
    No PM,please use the forum. || May the <SOLVED>-attribute be in your title!


  • lyotlyot Member Posts: 202
    kriki wrote:
    Correct, but there is still a small catch with FINDSET.

    If you set of records is bigger than that 500, the first 500 records are read WITHOUT creating a cursor, so it is very fast.
    BUT after that, a cursor needs to be created to read the rest of the records. And after creating the cursor, it has to be positioned on the last record in the FINDSET you just received. This positioning can be very expensive because it can require a lot of reads.
    SO :
    if you are sure that your recordset is bigger than that 500, you best use the classic FIND('-'). You need a cursor anyway, so this way you avoid the cost of positioning the cursor on the last record in the SET.

    Yup, forgot to mention that part... and the part when you're playing around with ASCENDING function.
    In that case the FIND('-') is also a must use, but that's also clearly mentioned in your how-to, so I'm telling nothing new here :wink:
  • AndwianAndwian Member Posts: 627
    Thanks all for the answer.
    lyot wrote:

    500 is dependant from the following property in NAV:
    File > Database > Alter > Advanced > Caching: Recordset

    Anyway, does anybody know why the Recordset property is set to a smaller number in NAV 2009? Where I think it should be better to set it 500 or larger?
    Regards,
    Andwian
  • AdministratorAdministrator Member, Moderator, Administrator Posts: 2,500
    Andwian wrote:
    Anyway, does anybody know why the Recordset property is set to a smaller number in NAV 2009? Where I think it should be better to set it 500 or larger?
    Please start a new thread, if you are not talking about "Application Test Toolset for Dynamics NAV 2009 SP1".
  • Sebi64Sebi64 Member Posts: 13
    Hello,

    thanks for this great apps.
    However, I have a range problem with it so I can't use it.
    I have the "basic" developer licence with some range limitations (50000 to 50030 for the tables, and so on for the forms, codeunits, ...)

    When I import the fob file, the range of the objects begin by 130xxx so I have an error message saying that I haven't the rights to run them.

    Do you have any idea how to get around this problem.

    FYI, I'm new in the world of Dynamics, so perhaps the solution is simple but I don't know it.

    Thanks for your help.
Sign In or Register to comment.