Вы можете указать эти значения в свойстве тестируемой программы.Используйте собственность, к которой у вас есть доступ.В этом примере программы я сериализовал цвет фона ячейки для json и выставил его через свойство AccessibleDescription
из моего DataGridView
.
Образца программы, для которого я напишу кодированный тест пользовательского интерфейса:
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Windows.Forms;
namespace WindowsFormsTestApplication
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
//Typically, the datasource is a db, xml, json, etc...
var dataSource = new[]
{
new{ Column1 = "value1", Column2 = "value2", Column3 = "value3"},
new{ Column1 = "value1", Column2 = "value2", Column3 = "value3"},
new{ Column1 = "value1", Column2 = "value2", Column3 = "value3"},
new{ Column1 = "value1", Column2 = "value2", Column3 = "value3"}
}.ToList();
dataGridView1.DataSource = dataSource;
}
private void Form1_Load(object sender, EventArgs e)
{
//Setting the background color for a cell in the dataGridView.
dataGridView1.Rows[1].Cells[1].Style.BackColor = Color.Red;
//This dictionary object will be serialized and used to tranfer the cell color information.
Dictionary<int, List<Color>> gridColors = new Dictionary<int, List<Color>>();
int rowIndex = 0;
//this code iterates the table and stores the information in the dictionary.
foreach (DataGridViewRow row in dataGridView1.Rows)
{
gridColors.Add(rowIndex, new List<Color>());
foreach (DataGridViewCell cell in row.Cells)
{
gridColors[rowIndex].Add(cell.Style.BackColor);
}
rowIndex++;
}
string json = JsonConvert.SerializeObject(gridColors);
dataGridView1.AccessibleDescription = json;
}
}
}
Вы должны разрешать сериализацию и раскрытие этих данных только в отладочной версии, а не в версии выпуска вашего программного обеспечения.Нет необходимости раскрывать эту информацию в действующем программном продукте.
Приведенный ниже код демонстрирует, как десериализовать эту информацию и использовать ее в тестах с закодированным пользовательским интерфейсом:
using CodedUITestProject1.UIMap1Classes;
using Microsoft.VisualStudio.TestTools.UITesting;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Newtonsoft.Json;
using System.Collections.Generic;
using System.Drawing;
namespace CodedUITestProject1
{
/// <summary>
/// Summary description for CodedUITest1
/// </summary>
[CodedUITest]
public class CodedUITest1
{
public CodedUITest1()
{
}
[TestMethod]
public void CodedUITestMethod1()
{
UIMap1 uiMap = new UIMap1();
//The UIDataGridViewTable has been added to the UIMap using the inspection tool from VS.
string jsonToConvert = uiMap.UIForm1Window.UIDataGridView1Window.UIDataGridViewTable.AccessibleDescription;
Dictionary<int, List<Color>> gridRowColors = JsonConvert.DeserializeObject<Dictionary<int, List<Color>>>(jsonToConvert);
//iterate the dictionary to retrieve the color for each cell.
int rowIndex = 0;
for (int i = 0; i < gridRowColors.Count - 1; i++)
{
List<Color> rowCellColors = gridRowColors[rowIndex];
foreach (Color cellColor in rowCellColors)
{
//Check what color your cell has here.
}
}
}
}
}
Снимок экранаданные о цвете подвергаются: 