コード例 #1
0
        private bool TryLaunchUnitTestsInternal()
        {
            try
            {
                var riderPackageAssembly = RiderPackageInterop.GetAssembly();
                if (riderPackageAssembly == null)
                {
                    return(false);
                }
                var launcherType = riderPackageAssembly.GetType("Packages.Rider.Editor.UnitTesting.RiderTestRunner");
                if (launcherType == null)
                {
                    return(false);
                }
                var assemblyNames  = myLaunch.TestFilters.Select(a => a.AssemblyName).ToArray();
                var testNames      = myLaunch.TestFilters.SelectMany(a => a.TestNames).ToArray();
                var runTestsMethod = launcherType.GetMethod("RunTests");
                if (runTestsMethod == null)
                {
                    return(false);
                }
                var mode = (int)myLaunch.TestMode; // 0 for Both, 1 for Edit, 2 for Play
                runTestsMethod.Invoke(null, new object[] { mode, assemblyNames, testNames, null, null, null });
                return(true);
            }
            catch (Exception e)
            {
                ourLogger.Error(e, "Exception while TryLaunchUnitTestsInternal.");
            }

            return(false);
        }
コード例 #2
0
        private bool TryLaunchUnitTestsInternal()
        {
            try
            {
                var riderPackageAssembly = RiderPackageInterop.GetAssembly();
                var launcherType         = riderPackageAssembly?.GetType("Packages.Rider.Editor.UnitTesting.RiderTestRunner");
                if (launcherType == null)
                {
                    return(false);
                }
                var assemblyNames = myLaunch.TestFilters.Select(a => a.AssemblyName).ToArray();
                var testNames     = myLaunch.TestFilters.SelectMany(a => a.TestNames).ToArray();
                var groupNames    = myLaunch.TestFilters.SelectMany(a => a.GroupNames).ToArray();
                var categoryNames = myLaunch.TestFilters.SelectMany(a => a.TestCategories).ToArray();
                var mode          = (int)myLaunch.TestMode; // 0 for Both, 1 for Edit, 2 for Play

                MethodInfo runTestsMethod;
                object[]   args;

                if (myLaunch.ClientControllerInfo != null)
                {
                    ourLogger.Verbose($"ClientController specified (SessionId={myLaunch.SessionId}): {myLaunch.ClientControllerInfo.TypeName}, {myLaunch.ClientControllerInfo.CodeBase}");

                    runTestsMethod = launcherType.GetMethod("RunTestsWithSyncCallbacks");
                    if (runTestsMethod == null)
                    {
                        ourLogger.Verbose($"Method 'RunTestsWithSyncCallbacks' not found in type '{launcherType.AssemblyQualifiedName}'");
                        return(false);
                    }

                    args = new object[] { myLaunch.SessionId, mode, assemblyNames, testNames, categoryNames, groupNames, null,
                                          myLaunch.ClientControllerInfo.CodeBase, myLaunch.ClientControllerInfo.TypeName,
                                          myLaunch.ClientControllerInfo.CodeBaseDependencies?.ToArray() };
                }
                else
                {
                    runTestsMethod = launcherType.GetMethod("RunTests");
                    if (runTestsMethod == null)
                    {
                        ourLogger.Verbose($"Method 'RunTests' not found in type '{launcherType.AssemblyQualifiedName}'");
                        return(false);
                    }

                    args = new object[] { mode, assemblyNames, testNames, categoryNames, groupNames, null };
                }

                runTestsMethod.Invoke(null, args);
                return(true);
            }
            catch (Exception e)
            {
                ourLogger.Error(e, "Exception while TryLaunchUnitTestsInternal.");
            }

            return(false);
        }
コード例 #3
0
        internal TestEventsSender(UnitTestLaunch unitTestLaunch)
        {
            var assembly = RiderPackageInterop.GetAssembly();

            if (assembly == null)
            {
                ourLogger.Error("EditorPlugin assembly is null.");
                return;
            }

            var data = assembly.GetType("Packages.Rider.Editor.UnitTesting.CallbackData");

            if (data == null)
            {
                return;
            }

            ProcessQueue(data, unitTestLaunch);

            SubscribeToChanged(data, unitTestLaunch);
        }