[英]Unit Testing Sitecore Installation from Different Server
因此,我是Sitecore的新手,不確定要如何啟用它。 我在服務器A上安裝了Sitecore,並且正在從服務器B運行單元測試。但是,我遇到了通過其API(在Sitecore.Kernel.dll中)遠程訪問Sitecore的問題。
問題:是否可以通過其他方法(最好通過dll中的Sitecore API)將其設置為針對來自另一台服務器的Sitecore安裝執行單元測試?
參考文獻:
測試代碼示例:
[TestMethod]
public void GetItemTest()
{
var database = global::Sitecore.Configuration.Factory.GetDatabase("master");
Assert.IsNotNull(database);
var item = database.GetItem("/sitecore/content");
Assert.IsNotNull(item);
Assert.AreEqual("content", item.Name);
}
例外:
System.TypeInitializationException was unhandled by user code
Message=The type initializer for 'Sitecore.SecurityModel.License.LicenseManager' threw an exception.
Source=Sitecore.Kernel
TypeName=Sitecore.SecurityModel.License.LicenseManager
StackTrace:
at Sitecore.SecurityModel.License.LicenseManager.DemandRuntime(Boolean acceptExpress)
at Sitecore.Data.Managers.ItemManager.get_Provider()
at Sitecore.Data.Managers.ItemManager.GetItem(String itemPath, Language language, Version version, Database database)
at Sitecore.Data.Database.GetItem(String path)
at Spacely.Web.Tests.Services.SitecoreServiceTest.GetItemTest() in C:\Users\foo\src\spacely\Spacely.Web.Tests\Services\SitecoreServiceTest.cs:line 25
InnerException: System.Reflection.TargetInvocationException
Message=Exception has been thrown by the target of an invocation.
Source=mscorlib
StackTrace:
at System.RuntimeMethodHandle._InvokeConstructor(IRuntimeMethodInfo method, Object[] args, SignatureStruct& signature, RuntimeType declaringType)
at System.RuntimeMethodHandle.InvokeConstructor(IRuntimeMethodInfo method, Object[] args, SignatureStruct signature, RuntimeType declaringType)
at System.Reflection.RuntimeConstructorInfo.Invoke(BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at System.Reflection.ConstructorInfo.Invoke(Object[] parameters)
at Sitecore.Reflection.ReflectionUtil.CreateObject(Type type, Object[] parameters)
at Sitecore.Reflection.ReflectionUtil.CreateObject(String assembly, String className, Object[] parameters)
at Sitecore.Reflection.ReflectionUtil.CreateObject(String typeName, Object[] parameters)
at Sitecore.Reflection.Nexus.GetApi[T](String typeName, T& api)
at Sitecore.Reflection.Nexus.get_LicenseApi()
at Sitecore.SecurityModel.License.LicenseManager.GetSnapshotData(Guid instance)
at Sitecore.SecurityModel.License.LicenseManager.UpdateSnapshot()
at Sitecore.SecurityModel.License.LicenseManager..cctor()
InnerException: System.ArgumentException
Message=The directory name \data is invalid.
Source=System
StackTrace:
at System.IO.FileSystemWatcher.set_Path(String value)
at Sitecore.IO.FileWatcher.InitializeWatcher(String filter, String folder)
at Sitecore.IO.FileWatcher..ctor(String folder, String filter)
at Sitecore.SecurityModel.License.LicenseWatcher..ctor()
at Sitecore.Nexus.Licensing.NexusLicenseApi.()
at Sitecore.Nexus.Licensing.NexusLicenseApi..ctor()
InnerException:
您描述的架構是不可能的,因為Sitecore API不能調用“到另一台服務器”,至少不是您在這里所做的那樣。 您鏈接到的文章介紹了如何使用Sitecore設置獨立於Web服務器運行的單元測試項目。 也就是說,它實際上會在網絡環境之外運行Sitecore。 這是可能的,但可能需要一些工作。 所需設置的一部分是將sitecore許可證放置在運行單元測試的服務器上,並將App.config中的dataFolder指向該位置。
一種替代方法是使用網絡工具來運行單元測試 ,但這可能不是您正在尋找的自動化解決方案。 該解決方案也可以在GitHub上獲得 。 我們已經有一段時間的想法是通過Web服務調用遠程測試工具。 這將是實現從遠程服務器運行測試目標的一種方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.