trước hết tôi mới sử dụng SpecFlow.SpecFlow: ClassInitialize và TestContext
Tôi có tệp tính năng mà tôi có/muốn tự động hóa bằng MSTest để chạy thử nghiệm chức năng liên quan đến máy chủ được thiết lập đầy đủ, truy cập dữ liệu ... Vì mục đích này, tôi phải định cấu hình máy chủ với dữ liệu trong các khối 'Given' của SpecFlow và bắt đầu nó sau đó. Tôi cũng phải sao chép một số tệp vào thư mục đầu ra của bài kiểm tra.
Trong các bài kiểm tra chức năng phi SpecFlow, tôi đã sử dụng thuộc tính ClassInitialize để lấy TestDeploymentDir từ TestContext; một cái gì đó như thế này:
[ClassInitialize]
public static void ClassSetup(TestContext context)
{
TargetDataDeploymentRoot = context.TestDeploymentDir;
}
Bây giờ với SpecFlow tôi không thể sử dụng thuộc tính này nữa vì nó được sử dụng bởi chính SpecFlow. Một số thuộc tính mới tồn tại, chẳng hạn như BeforeFeature hoạt động tương tự NHƯNG nó không truyền trên TestContext dưới dạng tham số.
Tôi chỉ cần truy cập vào TestDeploymentDir của TestContext để sao chép một số tệp ở đó trước khi thực sự phát tán máy chủ thử nghiệm chức năng của mình - dễ dàng thực hiện mà không có SpecFlow nhưng gần như không thể với SpecFlow.
Làm cách nào để giải quyết vấn đề này?
Có thể nào không?
Cảm ơn rất nhiều lời khuyên!
robert
Môi trường:
- Visual Studio 2012
- SpecFlow 1.9.0.77
Bạn có thể tạo các bài kiểm tra MSTest từ FIELS tính năng của bạn với specflow: http: //stackoverflow.com/questions/2984318/how-to-run-specflow-tests-in-visual-studio-2010 – nemesv
Cảm ơn bạn đã trả lời. Tôi đã tạo ra các thử nghiệm MSTest từ các tệp tính năng của mình, nhưng như đã đề cập ở trên, tôi không có quyền truy cập vào TestContext. –
Có thể [AssemblyInitialize] (http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.testtools.unittesting.assemblyinitializeattribute (v = vs.80) .aspx) có thể hoạt động cho kịch bản của bạn, specflow don không sử dụng nó. Nếu không với các tập tin tính năng hiện tại 'MsTestGeneratorProvider' bạn không thể có được' TestContext' được minh chứng. Tuy nhiên, bạn có thể lấy được từ 'MsTestGeneratorProvider' và tạo ra các xét nghiệm lưu trữ' TestContext' ở đâu đó bên trong specflow. – nemesv