diff --git a/UnitsNet.Tests/UnitDefinitionsTests.cs b/UnitsNet.Tests/UnitDefinitionsTests.cs
new file mode 100644
index 0000000000..bf08db852d
--- /dev/null
+++ b/UnitsNet.Tests/UnitDefinitionsTests.cs
@@ -0,0 +1,295 @@
+// Licensed under MIT No Attribution, see LICENSE file at the root.
+// Copyright 2013 Andreas Gullberg Larsen (andreas.larsen84@gmail.com). Maintained at https://github.com/angularsen/UnitsNet.
+
+using System.Globalization;
+using System.IO;
+
+namespace UnitsNet.Tests;
+
+///
+/// Checks the unit definitions in Common/UnitDefinitions for mistakes that conversion tests don't catch: base units
+/// that disagree with the conversion, and abbreviations that make parsing ambiguous.
+///
+///
+/// Each test has a list of known violations, so that the tests catch new mistakes while existing ones are fixed
+/// separately. Remove an entry when fixing it.
+///
+public class UnitDefinitionsTests
+{
+ ///
+ /// Units whose don't give the unit's conversion factor, as "Quantity.Unit".
+ ///
+ ///
+ /// The conversions of these units are correct; their base units are wrong. Prefixed units inherit the base units of
+ /// the unit they are prefixed from.
+ ///
+ private static readonly HashSet KnownWrongBaseUnits =
+ [
+ // Knot per second is nautical mile per hour per second, which has no single time unit.
+ "Acceleration.KnotPerMinute", "Acceleration.KnotPerSecond",
+ // Pound per square foot, not per thousand square feet.
+ "AreaDensity.PoundPerThousandSquareFeet",
+ // Volt per second is kg·m²·s⁻⁴·A⁻¹, so a different time unit changes the factor by its fourth power.
+ "ElectricPotentialChangeRate.VoltPerHour", "ElectricPotentialChangeRate.KilovoltPerHour", "ElectricPotentialChangeRate.MegavoltPerHour",
+ "ElectricPotentialChangeRate.MicrovoltPerHour", "ElectricPotentialChangeRate.MillivoltPerHour",
+ "ElectricPotentialChangeRate.VoltPerMinute", "ElectricPotentialChangeRate.KilovoltPerMinute", "ElectricPotentialChangeRate.MegavoltPerMinute",
+ "ElectricPotentialChangeRate.MicrovoltPerMinute", "ElectricPotentialChangeRate.MillivoltPerMinute",
+ "ElectricPotentialChangeRate.VoltPerMicrosecond", "ElectricPotentialChangeRate.KilovoltPerMicrosecond",
+ "ElectricPotentialChangeRate.MegavoltPerMicrosecond", "ElectricPotentialChangeRate.MicrovoltPerMicrosecond",
+ "ElectricPotentialChangeRate.MillivoltPerMicrosecond",
+ // Pascal second per cubic meter is kg·m⁻⁴·s⁻¹, so these base units don't express minutes, liters or milliliters.
+ "FluidResistance.PascalMinutePerCubicMeter", "FluidResistance.PascalMinutePerLiter", "FluidResistance.PascalSecondPerMilliliter",
+ // Watt per square meter is kg·s⁻³, so these base units don't express square millimeters.
+ "HeatFlux.WattPerSquareMillimeter", "HeatFlux.CentiwattPerSquareMillimeter", "HeatFlux.DeciwattPerSquareMillimeter",
+ "HeatFlux.MicrowattPerSquareMillimeter", "HeatFlux.MilliwattPerSquareMillimeter", "HeatFlux.NanowattPerSquareMillimeter",
+ // Pascal per second is kg·m⁻¹·s⁻³, so a minute changes the factor by its cube, and pound-force isn't pound.
+ "PressureChangeRate.PascalPerMinute", "PressureChangeRate.KilopascalPerMinute", "PressureChangeRate.MegapascalPerMinute",
+ "PressureChangeRate.PoundForcePerSquareInchPerSecond", "PressureChangeRate.KilopoundForcePerSquareInchPerSecond",
+ "PressureChangeRate.MegapoundForcePerSquareInchPerSecond", "PressureChangeRate.PoundForcePerSquareInchPerMinute",
+ "PressureChangeRate.KilopoundForcePerSquareInchPerMinute", "PressureChangeRate.MegapoundForcePerSquareInchPerMinute",
+ // The roentgen is 2.58e-4 C/kg, not 1 C/kg.
+ "RadiationExposure.Roentgen", "RadiationExposure.Microroentgen", "RadiationExposure.Milliroentgen",
+ // The curie is 3.7e10 Bq and the rutherford 1e6 Bq, not 1 per second.
+ "Radioactivity.Curie", "Radioactivity.Kilocurie", "Radioactivity.Megacurie", "Radioactivity.Gigacurie", "Radioactivity.Teracurie",
+ "Radioactivity.Rutherford", "Radioactivity.Kilorutherford", "Radioactivity.Megarutherford", "Radioactivity.Gigarutherford",
+ "Radioactivity.Terarutherford",
+ // Square decimeter is 1e-2 m², but a liter per meter is 1e-3 m².
+ "VolumePerLength.LiterPerMeter"
+ ];
+
+ ///
+ /// Abbreviations shared by several units of the same quantity, as "Quantity abbreviation".
+ ///
+ private static readonly HashSet KnownAmbiguousAbbreviations =
+ [
+ // The DTP and printer's point and pica are both commonly written this way. UnitParserTests covers the ambiguity.
+ "Length pt", "Length pica",
+ // The same unit under two names.
+ "Force кгс",
+ // The long (UK) and short (US) hundredweight are both written cwt.
+ "Mass cwt",
+ // Mistranslations: 英亩 is acre (hectare is 公顷), 纳米 is nanometer (nautical mile is 海里), and мил is mil.
+ "Area 英亩", "Length 纳米", "Length мил"
+ ];
+
+ ///
+ /// Abbreviations with the Greek small letter mu (U+03BC) instead of the micro sign (U+00B5), as "Quantity.Unit".
+ ///
+ private static readonly HashSet KnownGreekMuAbbreviations =
+ [
+ "DoseAreaProduct.GraySquareMicrometer", "DoseAreaProduct.CentigraySquareMicrometer", "DoseAreaProduct.DecigraySquareMicrometer",
+ "DoseAreaProduct.MicrograySquareMicrometer", "DoseAreaProduct.MilligraySquareMicrometer",
+ "ElectricCurrentGradient.AmperePerMicrosecond",
+ "ElectricPotentialChangeRate.VoltPerMicrosecond", "ElectricPotentialChangeRate.KilovoltPerMicrosecond",
+ "ElectricPotentialChangeRate.MegavoltPerMicrosecond", "ElectricPotentialChangeRate.MicrovoltPerMicrosecond",
+ "ElectricPotentialChangeRate.MillivoltPerMicrosecond",
+ "MassConcentration.GramPerMicroliter", "MassConcentration.CentigramPerMicroliter", "MassConcentration.DecigramPerMicroliter",
+ "MassConcentration.MicrogramPerMicroliter", "MassConcentration.MilligramPerMicroliter", "MassConcentration.NanogramPerMicroliter",
+ "MassConcentration.PicogramPerMicroliter"
+ ];
+
+ public static IEnumerable