Description
Specifies what TestComplete will do when an error occurs in the test item that corresponds to the ProjectTestItem_COMAccessObj object. This property is similar to the property specified in the On error column of the project’s Execution Plan editor.
Declaration
ProjectTestItem_COMAccessObj.StopOnError
Read-Write Property | Integer |
ProjectTestItem_COMAccessObj | An expression, variable or parameter that specifies a reference to a ProjectTestItem_COMAccess object |
Applies To
The property is applied to the following object:
Property Value
An integer value indicating the chosen behavior of TestComplete in case of an error. The following values are possible:
Value | Description |
---|---|
0 | Proceed with project execution as if no errors have occurred. Analogous to assigning Continue running to the test item’s On error column of the Execution Plan editor. |
1 | Stop the execution of the whole project. Analogous to assigning Stop project to the test item’s On error column of the Execution Plan editor. |
2 | Stop the execution of the current test item (including its child test items and the further iterations of the current item), and proceed with the execution of the subsequent sibling items. Analogous to assigning Stop current item to the test item’s On error column of the Execution Plan editor. |
Example
The following example demonstrates how to access the project’s test item collection from a Visual Basic or C# application. The sample code uses the ProjectTests_COMAccess
object’s properties to obtain the ProjectTestItem_COMAccess
objects that provide a program interface to the project test items. The example displays a tree structure corresponding to the project’s test item collection structure.
Visual Basic
Dim TestCompleteApp As TestCompleteApplication
Dim IntegrationObject As ItcIntegration
Dim LastResult As ItcIntegrationResultDescription
' Creates the application object
Set TestCompleteApp = CreateObject("TestComplete.TestCompleteApplication.15")
' Obtains the integration object
Set IntegrationObject = TestCompleteApp.Integration
' Opens the project
IntegrationObject.OpenProjectSuiteEx "C:\Work Folder\TestSuite\TestSuite.pjs"
' Needed to process errors
Err.Clear
On Error GoTo Err_Label
' Obtains the ProjectTests_COMAccess object
' That provides a program interface to the project's test item collection
Set ProjectItems = IntegrationObject.TestSuite("TestProject")
' Determines the number of test items the project contains
ItemsCount = ProjectItems.Count
' Iterates through the project’s test items
' And displays them in the tree view
For i = 0 To ItemsCount - 1
Set TestItem = ProjectItems.TestItem(i)
Call PopulateItem(TestItem)
Next
Err_Label:
' Processes errors
If Err.Number <> 0 Then
MsgBox Err.Description, vbCritical, "Error"
End If
' Closes TestComplete
TestCompleteApp.Quit
End Sub
Public Sub PopulateItem(ATestItem)
Dim ANode As Node
' Obtains the parent item for the current test item
Set PTestItem = ATestItem.ParentTestItem
If Not PTestItem Is Nothing Then
Set ANode = MainForm.ItemsTree.Nodes.Add(PTestItem.Name, tvwChild, ATestItem.Name, ATestItem.Name)
Else
Set ANode = MainForm.ItemsTree.Nodes.Add(, , ATestItem.Name, ATestItem.Name)
End If
' Checks whether the test item is enabled
If ATestItem.Enabled Then
Set TNode = MainForm.ItemsTree.Nodes.Add(ATestItem.Name, tvwChild, , "Enabled: " & CStr(ATestItem.Enabled))
End If
' Checks whether the test item is a group
If ATestItem.IsGroup Then
Set GNode = MainForm.ItemsTree.Nodes.Add(ATestItem.Name, tvwChild, , "Is a group: True")
Else
' Obtains the test item description
Set TNode = MainForm.ItemsTree.Nodes.Add(ATestItem.Name, tvwChild, , "Description: " & ATestItem.Description)
' Obtains the maximum execution time for the test item
Set TNode = MainForm.ItemsTree.Nodes.Add(ATestItem.Name, tvwChild, , "Timeout: " & CStr(ATestItem.Timeout))
' Defines how many times the test item will be executed
Set TNode = MainForm.ItemsTree.Nodes.Add(ATestItem.Name, tvwChild, , "Count: " & CStr(ATestItem.Count))
' Obtains the test item’s StopOnError property
StopOnError = ATestItem.StopOnError
Set TNode = MainForm.ItemsTree.Nodes.Add(ATestItem.Name, tvwChild, , "On error: ")
Select Case StopOnError
Case 0
TNode.Text = TNode.Text & "Continue running"
Case 1
TNode.Text = TNode.Text & "Stop project"
Case 2
TNode.Text = TNode.Text & "Stop current item"
Case 3
TNode.Text = TNode.Text & "Use project's On error property"
End Select
' Obtains the test item’s StopOnException property
StopOnException = ATestItem.StopOnException
Set TNode = MainForm.ItemsTree.Nodes.Add(ATestItem.Name, tvwChild, , "On exception: ")
Select Case StopOnError
Case 0
TNode.Text = TNode.Text & "Continue running"
Case 1
TNode.Text = TNode.Text & "Stop project"
Case 2
TNode.Text = TNode.Text & "Stop current item"
End Select
End If
' Checks whether the test item has child test items
If ATestItem.ChildCount > 0 Then
' Iterates through the child items
For i = 0 To ATestItem.ChildCount - 1
Set CTestItem = ATestItem.ChildTestItem(i)
Call PopulateItem(CTestItem)
Next
End If
End Sub
C#
using TestComplete;
…
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
}
private void btn_Connect_Click(object sender, EventArgs e)
{
const string TCProgID = "TestComplete.TestCompleteApplication.15";
object TestCompleteObject = null;
// Obtains access to TestComplete
try
{
TestCompleteObject = Marshal.GetActiveObject(TCProgID);
}
catch
{
try
{
TestCompleteObject = Activator.CreateInstance(Type.GetTypeFromProgID(TCProgID));
}
catch
{
}
}
if (TestCompleteObject == null) return;
// Obtains ITestCompleteCOMManager
TestComplete.ITestCompleteCOMManager TestCompleteManager = (TestComplete.ITestCompleteCOMManager) TestCompleteObject;
// Obtains the Integration object
TestComplete.ItcIntegration IntegrationObject = TestCompleteManager.Integration;
// We have a reference to the integration object
// Now we can use its methods and properties to automate TestComplete
// Loads the project suite
IntegrationObject.OpenProjectSuiteEx("C:\\Work Folder\\TestSuite\\TestSuite.pjs");
try
{
// Obtains the ProjectTests_COMAccess object providing a program interface to the project’s test item collection
object ObjProjectItems = IntegrationObject.get_TestSuite("TestProject");
TestComplete.ItcProjectTests_COMAccess ProjectItems = (TestComplete.ItcProjectTests_COMAccess)ObjProjectItems;
// Determines the number of test items the project contains
int Count = ProjectItems.Count;
TreeView ItemsTree = new TreeView();
ItemsTree.CheckBoxes = true;
ItemsTree.ShowNodeToolTips = true;
ItemsTree.Size = new Size(400, 200);
ItemsTree.Top = 12;
ItemsTree.Left = 12;
// Iterates through the project’s test items
// And displays them in the tree view
for (var i = 0; i < Count; i++)
{
TestComplete.ItcProjectTestItem_COMAccess TestItem = ProjectItems.get_TestItem(i);
TreeNode TN = ProcessItem(TestItem);
ItemsTree.Nodes.Add(TN);
}
this.Controls.Add(ItemsTree);
}
catch (System.Runtime.InteropServices.COMException ex)
{
System.Windows.Forms.MessageBox.Show("An exception occurred: " + ex.Message);
}
finally
{
// Closes TestComplete
TestCompleteManager.Quit();
// Releases COM objects
Marshal.ReleaseComObject(IntegrationObject);
Marshal.ReleaseComObject(TestCompleteManager);
Marshal.ReleaseComObject(TestCompleteObject);
}
}
}
public TreeNode ProcessItem(TestComplete.ItcProjectTestItem_COMAccess ATestItem)
{
TreeNode ATreeNode = new TreeNode(ATestItem.Name);
string ToolTipText;
// Obtains the parent test item of the current test item
// And checks whether the parent item and the current item are enabled
TestComplete.ItcProjectTestItem_COMAccess PTestItem = ATestItem.ParentTestItem;
if (((PTestItem != null) && (PTestItem.Enabled) && (ATestItem.Enabled)) || ((PTestItem == null) && (ATestItem.Enabled)) )
ATreeNode.Checked = true;
// Checks whether the current test item is a group
if (ATestItem.IsGroup)
{
ToolTipText = "Is a Group";
}
else
{
// Obtains the test item description
ToolTipText = "Description: " + ((String.IsNullOrEmpty(ATestItem.Description)) ? "not specified" : ATestItem.Description) + "\r\n";
TestComplete.TC_TEST_ERROR_PROCEESING_VALUE StopOnError = ATestItem.StopOnError;
// Obtains the test item’s StopOnError property
ToolTipText += "On error: ";
switch (StopOnError)
{
case TestComplete.TC_TEST_ERROR_PROCEESING_VALUE.epvNone:
ToolTipText += "Continue running\r\n";
break;
case TestComplete.TC_TEST_ERROR_PROCEESING_VALUE.epvProject:
ToolTipText += "Stop project\r\n";
break;
case TestComplete.TC_TEST_ERROR_PROCEESING_VALUE.epvTestItem:
ToolTipText += "Stop current item\r\n";
break;
case TestComplete.TC_TEST_ERROR_PROCEESING_VALUE.epvProjectDefault:
ToolTipText += "Use project's On error property\r\n";
break;
}
// Obtains the test item’s StopOnexception property
TestComplete.TC_TEST_ERROR_PROCEESING_VALUE StopOnException = ATestItem.StopOnException;
ToolTipText += "On Exception: ";
switch (StopOnException)
{
case TestComplete.TC_TEST_ERROR_PROCEESING_VALUE.epvNone:
ToolTipText += "Continue running\r\n";
break;
case TestComplete.TC_TEST_ERROR_PROCEESING_VALUE.epvProject:
ToolTipText += "Stop project\r\n";
break;
case TestComplete.TC_TEST_ERROR_PROCEESING_VALUE.epvTestItem:
ToolTipText += "Stop current item\r\n";
break;
}
// Defines how many times the test item will be executed
ToolTipText += "Count: " + ATestItem.Count + "\r\n";
// Obtains the maximum execution time for the test item
ToolTipText += "Timeout: " + ATestItem.Timeout + "\r\n";
}
ATreeNode.ToolTipText = ToolTipText;
// Obtains the number of the current test item’s child items
int Count = ATestItem.ChildCount;
// Iterates through the child items
for (var i = 0; i < Count; i++)
{
TestComplete.ItcProjectTestItem_COMAccess CTestItem = ATestItem.get_ChildTestItem(i);
TreeNode CTreeNode = ProcessItem(CTestItem);
ATreeNode.Nodes.Add(CTreeNode);
}
return ATreeNode;
}
}
See Also
Working With TestComplete via COM - Overview
StopOnException Property
Timeout Property