DataSourceAttribute Class
Provides data source-specific information for data-driven testing. This class cannot be inherited.
Assembly: Microsoft.VisualStudio.QualityTools.UnitTestFramework (in Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll)
The DataSourceAttribute type exposes the following members.
| Name | Description | |
|---|---|---|
![]() | DataSourceAttribute(String) | Initializes a new instance of the DataSourceAttribute class. This instance will be initialized with a data provider and connection string associated with the setting name. |
![]() | DataSourceAttribute(String, String) | Initializes a new instance of the DataSourceAttribute class. This instance will be initialized with a connection string and table name. |
![]() | DataSourceAttribute(String, String, String, DataAccessMethod) | Initializes a new instance of the DataSourceAttribute class. This instance will be initialized with a data provider, connection string, data table and data access method to access the data source. |
| Name | Description | |
|---|---|---|
![]() | ConnectionString | Gets a value representing the connection string for the data source. |
![]() | DataAccessMethod | Gets the method used to access the data source. |
![]() | DataSourceSettingName | Gets a value indicating the setting name used to identify data source connection information stored in a configuration file. |
![]() | ProviderInvariantName | Gets a value representing the data provider of the data source. |
![]() | TableName | Gets a value indicating the table name providing data. |
![]() | TypeId | When implemented in a derived class, gets a unique identifier for this Attribute. (Inherited from Attribute.) |
| Name | Description | |
|---|---|---|
![]() | Equals | Infrastructure. Returns a value that indicates whether this instance is equal to a specified object. (Inherited from Attribute.) |
![]() | Finalize | Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.) |
![]() | GetHashCode | Returns the hash code for this instance. (Inherited from Attribute.) |
![]() | GetType | Gets the Type of the current instance. (Inherited from Object.) |
![]() | IsDefaultAttribute | When overridden in a derived class, indicates whether the value of this instance is the default value for the derived class. (Inherited from Attribute.) |
![]() | Match | When overridden in a derived class, returns a value that indicates whether this instance equals a specified object. (Inherited from Attribute.) |
![]() | MemberwiseClone | Creates a shallow copy of the current Object. (Inherited from Object.) |
![]() | ToString | Returns a string that represents the current object. (Inherited from Object.) |
| Name | Description | |
|---|---|---|
![]() ![]() | DefaultDataAccessMethod | Represents the default data access method. This field is read-only. |
![]() ![]() | DefaultProviderName | Represents the default data provider name. This field is read-only. |
| Name | Description | |
|---|---|---|
![]() ![]() | _Attribute.GetIDsOfNames | Maps a set of names to a corresponding set of dispatch identifiers. (Inherited from Attribute.) |
![]() ![]() | _Attribute.GetTypeInfo | Retrieves the type information for an object, which can be used to get the type information for an interface. (Inherited from Attribute.) |
![]() ![]() | _Attribute.GetTypeInfoCount | Retrieves the number of type information interfaces that an object provides (either 0 or 1). (Inherited from Attribute.) |
![]() ![]() | _Attribute.Invoke | Provides access to properties and methods exposed by an object. (Inherited from Attribute.) |
The DataSourceAttribute class provides two ways to specify data source information for data-driven tests. The first way specifies information through a connection string, provider information, and source table name passed to the DataSourceAttribute.
Connection String Example:
[DataSource("Provider=SQLOLEDB.1;Data Source=MySource;Integrated] Security=SSPI;Initial Catalog=MyCatalog;Persist Security Info=False", "MyTable")]
The second way passes a single argument to the attribute that specifies the configuration setting located in the app.config file.
Configuration Setting Example:
[DataSource("dataSourceNameFromConfigFile")]
Note |
|---|
Different data providers use different connection strings. The name of the provider is a part of connection string. |
For more information about using the app.config file for specifying a data source, see Walkthrough: Using a Configuration File to Define a Data Source.
For more information about data-driven tests, see Data-Driven Unit Tests.
For more information about using attributes, see Extending Metadata Using Attributes.
The following code contains the class and method to test.
using System; namespace BankAccountNS { public class BankAccount { private string custName; private double bal; public BankAccount(string customerName, double balance) { custName = customerName; bal = balance; } public double Balance { get { return bal; } } public void Debit(double amount) { if (amount < 0) throw new ArgumentOutOfRangeException("amount"); bal -= amount; } } }
The following test will pass. It uses the sample.mdb access database that contains the following data in Table1.
Name | Balance | Amount |
|---|---|---|
Jorg Bott | 100 | 25 |
Pedro Ruivo | 70 | 60 |
Mandar Samant | 75 | 71.25 |
Russell King | 159 | 158 |
Jun Cao | 11.99 | 11.22 |
Note that the DataAccessMethod is sequential.
using Microsoft.VisualStudio.TestTools.UnitTesting; using BankAccountNS; using System; namespace MyCSTestProject { [TestClass()] public class BankAccountTest { private TestContext testContextInstance; public TestContext TestContext { get { return testContextInstance; } set { testContextInstance = value; } } [TestMethod()] [DataSource("System.Data.OleDb", "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\"C:\\sample.mdb\"", "Table1", DataAccessMethod.Sequential)] public void DebitTest() { string customerName = testContextInstance.DataRow["Name"].ToString(); double bal = Convert.ToDouble(testContextInstance.DataRow["Balance"]); double amt = Convert.ToDouble(testContextInstance.DataRow["Amount"]); double newBalance = bal - amt; BankAccount target = new BankAccount(customerName, bal); target.Debit(amt); Assert.AreEqual(newBalance, target.Balance, .00); } } }
